ドメイン駆動設計で開発する時に、まずお手本となるコード例をみたいですよね。
まず、これ見ましょう。
DDDSampleは、Javaで実装されたものです。*1
原書の内容と連動しているので、原書を読んでいる人にとっては分かりやすいと思います。読んでいなくても、概念を抑える前に具体的なコードで実態を把握しておいて、本を読んでもいいと思います。
ちなみに、このあたりを見ていただくと、ドメインオブジェクトを規定するためのインターフェイスが定義されています。
http://dddsample.svn.sourceforge.net/viewvc/dddsample/trunk/dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/domain/patterns/
このインターフェイスを参考に別のライブラリに切り出したのがこちら。獅子王プロジェクトのdomain-driven-design.jarです。実装クラスはほとんどありません。仕様用のjarとして使います。*2
http://sourceforge.jp/projects/sisioh/svn/view/altair/non-bundle/domain-driven-design-spec/?root=sisioh
Maven2から使いたい人は、以下をpom.xmlに追加してください。
<repositories> <repository> <id>sisioh.sourceforge.jp</id> <name>Sisioh Maven Repository</name> <url>http://sisioh.sourceforge.jp/maven2</url> </repository> <repository> <id>sisioh.sourceforge.jp-snapshot</id> <name>Sisioh Maven Snapshot Repository</name> <url>http://sisioh.sourceforge.jp/maven2-snapshot</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.sisioh</groupId> <artifactId>domain-driven-design-spec</artifactId> <version>1.0.0</version> </dependency> </dependencies>
Time and Money Code Library
あと、こちら。SpecificationやValueObjectが中心だと思いますが、参考になると思います。この開発には、Evansも設計に絡んでいるようです。業務アプリになると時間やお金の話がでてくるので、参考に見ておくとよいかも。弊社ではid:daisuke-mがコードを読み込んでいたような気がします。
他にもサンプルがあるよって情報あれば、コメントかトラックバックいただけば幸いです。