wildcatsの日記

赤羽在住でIT関係の会社の社長やってます。

業務系のクラスでインタフェイスの実装クラス名に「インタフェイス名+Impl」って名前をつけるのはダサいよね。

実装に特性があるからインタフェイスと実装を分離するわけで*1
インタフェイスに対して実装が1クラスになる場合にはインタフェイスと実装を分離する必要が無いとボクは思うね。


追記:特定のDIコンテナの話はこのエントリと無関係です。
追追記:他所での議論の延長でボクの考えをここに書いただけなので、特定のDIコンテナとか特定の設計手法とかは何も関係ない(というか意識もしていなかった)話ですけど。
上にも例外として書いたしコメントにも書いたんだけど、たとえばトランザクション自動制御とかでFacadeに対してAspectをかけたい場合の設計手法の一つとしてインタフェイスと実装を強制的に分離(インタフェイスと実装が1対1)してDynamic Proxyを使う設計手法を用いても構わないのではないでしょうか?最近のプロジェクトでDIコンテナは使ってないけどHibernateのセッションとかの管理をFacadeでしたくなかったのでFacadeについてはインターフェイスと実装の強制分離(1対1)を採用していたことがあります。そろそろ追記するのが疲れてきたのでこの辺で。
追追追記:自宅に帰ってきたので安心してコメントできるな。
>>918 処世術とか決め付けて書くのは自由ですが心外です。私は悪いものは具体的に悪いと書くタイプの人間ですから私の認識していないその設計手法とやらをリンク頂くなりして私に教授してくれませんか?それが気に入らなければこの日記で遠慮なく叩きますよ。
>>922 EasyMockを使えばインタフェイスを用いなくてもMockを使うことは可能です。ですからMockを使うからインタフェイス抽出と言う論理は成立しないと思います。別の観点があるのであれば提示してください。
>>925 私は「比較的安全に新しいコードと差し替える」と言う可能性を考える時間が無駄だと思っています。もしそう言う実装を見かけたらIDEリファクタリングを行いインタフェイスを抽出してから対応すればよいと思います。インスタンス生成のコードが複数箇所に見られて対応が困ると言うことであれば、2箇所にインスタンス生成のコードが散らばった段階でリファクタリングでFactoryパターンを導入できていれば良いだけの話だと思います。比較的安全と言う意味が私とあなたで異なっているかもしれませんが。
>>932 誤読もしくは私が書いたこととは違う話だと思いますが、私は複雑度が上がるから嫌とは一言も書いていません。もしかするとSaisseさんの日記の話でしょうか?(もしそうであればこのレスはスルーしてくださいませ)
追追追記:追記したエントリはこの辺

*1:例外としてはDynamic Proxyを用いたいから分離するケースはあると思う