[Seasar-user:2246] インターフェースの考え方

Yasuo Higa higa
2005年 6月 23日 (木) 16:58:04 JST


<[E-MAIL ADDRESS DELETED]> の、
   "[Seasar-user:2245] Re: じゃ、ずばりいうわよ" において、
   "加藤太朗 <[E-MAIL ADDRESS DELETED]>"さんは書きました:

ひがです。

私のインターフェースについての考え方を書いておきます。
私は基本的に、Seasar2を作ったときには、実装クラスのみと
いう作りにはほとんどしてません。
*Utilとかは別ですが。

ある機能を表すインターフェースを定義してから、
別のパッケージ(たいていは子供のimpl)で実装クラスを定義します。

1つ目の理由は、読む人の分かりやすさです。
実装とは別に概念的な機能を一通り押さえた上で
実装クラスを読んだほうが分かりやすいだろうということです。

2つ目の理由は、テストのしやすさです。
実装クラスは他のインターフェースにだけ依存するようにしておけば、
各実装クラスをモックなどを使って個別にテストすることができます。
実装クラス同士が直接依存しているとお互いに依存している部分が
すべて実装し終わらないとテストできません。

3つ目の理由は、実装クラス間の依存性を低くすることで
実装が変更されたときにその変更の影響範囲をできるだけ
小さくすることです。

上記のことは、Seasar2の実装のときに考えていたことです。
今は、データのみを持っている、あるいは絶対に変更されないような
メソッドだけで構成されるクラスは、インターフェース
はいらないかなと思っています。

次のS2 5.0では、DIContainerがDIContainer自身で組み立てられるように
なるので、上記のことがさらに徹底されると思います。
DIContainerなしのインターフェース駆動開発は、やりづらいので。
---
ひがやすを(http://d.hatena.ne.jp/higayasuo/)



Seasar-user メーリングリストの案内