领域驱动设计-工厂与仓储

领域模型中有两个比较特殊的角色,他们虽然不表达业务知识,但却把他们划分在领域层中:工厂、仓储。


工厂:每套领域模型(或者说一个模块module)一般都不只是一两个简单的对象,而是由一个一定复杂度的聚集结构组成的。对于领域模型的访问有两个准则:必须从聚集结构的根部(root)访问模型的各个部分,必须保持模型的完整性。也就是说,一开始构造一个模型的时候,必须将其完整的初始化,而不是只构造一部分,然后在随后的处理过程中逐步完善。这就需要一个比较合理的机制,确保完整的组装出模型。工厂很符合这个需求,它就跟工业生产中的工厂概念一样,组合产品的各个部分,为客户输送完整的商品(模型)。具体的工厂实现可以考虑静态工厂、抽象工厂、构建者等模式。


仓储:在软件的处理过程中常常涉及数据的持久化,如果让业务逻辑层自己负责持久化,显然是将业务逻辑和非业务逻辑(持久化)耦合到了一起。仓储就是用于业务逻辑与持久化之间的解耦。仓储通过对持久化的再次封装(如果说DAO是第一次封装的话^^),能够为业务层提供完整的领域模型,同时也提供对领域模型的存储操作。


这里需要注意的一点是,工厂属于纯领域模型的一部分,它只负责领域对象的创建工作(从无到有),而仓储封装了持久化,它操作的是已经存在的对象(从数据库中读取出来、重新存储到数据库中)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值