这两天在研究领域驱动设计,准备用于公司的产品

领域驱动设计(DDD),貌似很强大,遵循OO的思想。

但DDD落地有点难度,软件一般都会分层架构,整个系统分为3层或4层。

三层的分别为:展示层、业务逻辑层、数据访问层。

四层大致为:展示层,业务逻辑层,领域层,数据访问层。

 

在四层的架构中,我们看到了领域层。顾名思义,里面是放领域对象的。里面的领域有可能除了包含领域固有的逻辑外,还会包含一些操作持久化对象的方法。

为了满足单一职责,提高复用的能力,有必要将操作持久化对象的方法分离出去。有牛人建议使用Repository来封装持久化对象的操作方法,想法貌似不错。但当真正这样干的时候,总是会遇到这样那样的问题,比如:

1、领域对象之间有很多关联、依赖的关系,当表示层或者业务逻辑层链式调用领域对象时……(可能我希望是延迟加载数据)

2、当表示层创建了一个暂未持久化的对象链后,通过业务逻辑层持久化时……

以上第一个问题,特别是在分布式系统中,会更为麻烦。

 

我目前是这样想的:

1、解决延迟加载的方法:领域对象中定义了关联属性的get事件,在get前,要求Repository先执行get事件挂载的方法(就是调用时取值、赋值)。

2、解决链式存储的方法:让领域对象对应的Repository对象委派其关联或依赖的领域对象对应的Repository进行持久化。

 

但1中在wcf或者web service中会有问题。

 

  基于控制台的,没有用WCF的Demo。

你可能感兴趣的:(产品)