サーブレットやフレームワークを使った開発でDAOパターンを採用する場合、DAOは必ずインターフェースとする。
これはモックへの差し替えを行うためである。
DIと組み合わせることによって、設定ファイルのみでモックによるテストを行ったり、本物の実装を動かせるようにする。
<<interface>>XxxDao
△
│
XxxDaoImpl
(↑)実装は上記のようなクラス構成となる。
モックを使う場合は、XxxDaoImplクラスのモックを別パッケージに用意し、DI設定を変える。
例えばSeasar2で、通常のDAO設定が次のようなものだとする。
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<initMethod name="addClassPattern">
<arg>"jp.co.sample.dao"</arg>
<arg>".*DaoImpl"</arg>
</initMethod>
</component>
モックの場合は、次のように設定が変わる。(パッケージが"jp.co.sample.dao"から"jp.co.sample.dao.mock"になっている)
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<initMethod name="addClassPattern">
<arg>"jp.co.sample.dao.mock"</arg>
<arg>".*DaoImpl"</arg>
</initMethod>
</component>
ドメイン駆動などにおけるサービスも同様で、サービスは必ずインターフェースとする。
0 件のコメント:
コメントを投稿