2009年5月4日星期一

DDD(Domain Driven Design)之Package规划

在以前的项目中,“贫血”模型用的比较多,然而“贫血”模型并没有充分发挥DDD的优势,也达不到Domain Objects是业务逻辑的核心作用。

借鉴网络上的一些资料,在新的架构下,自己规划了一下Packages。目前,新架构采用Wicket 1.4 + Guice 2.0 + Warp-persist 2.0 + Hibernate 3.3 框架。如此设计架构,主要是为了进行组件式复用,以及保持架构尽量轻量化。

Packages按层次方式来进行划分(见下图):
  1. domain:放置所有的领域对象,包含model和service两类对象。model下放置DO和Repository接口,DO中包含业务逻辑方法,并可注入Repository进行持久化。service下主要放置涉及多个DO之间存在交互的对

    象。
  2. infrastructure.persistence:放置所有Repository接口的hibernate实现。infrastructure下包含所有的基础实施,譬如:cache,security等。
  3. application:facade模式的应用,主要是为了方便表现层调用。并且可适配多种展现方式,譬如:html、xml等。
  4. guice:放置guice的module。