《领域驱动设计C#2008实现》读书笔记
首先需要说明这本书代码太多,但是也有一定的好处,尤其是对于阅读源代码比较费力的同学(比如我)可以起到很好的入门指引.
该书主要描述如何将领域驱动设计应用到c#的项目中来,那么不得不简单介绍一下什么是领域驱动设计了。其实按我个人的理解所谓领域驱动设计就是将领域模型作为关注点来进行系统分析,设计,实现和测试,以达到各个阶段,模块的高度统一。
本书其实是围绕一个项目的开发书写,主要可以分为两部分
项目介绍以及概念介绍(项目需求,架构设计)
各模块的详细设计开发介绍(代码的解读,个人感觉过于重复)
项目需求部分这里略过,个人感觉本章的重点就是系统架构的确定,主要分为:
UI表示层--用户交互(WPF:MVVM)
应用层--领域层的一个外观(Facade模式)
领域层--业务逻辑的集中处理
基础架构层--基础支撑模块,通用技术,数据库存储等
设计分层架构
应用层:调用领域层实现/协调领域层对象间的动作
设计领域层:使用POCO来实现持久化无关(具体的持久化在基础模块中实现)
介绍相应的概念
实体-具有标识的对象(在不同的使用场景中可能有不同的实体)
值对象-没有标识的对象(DTO),值对象只能在构造时完成赋值,属性为只读,不能修改。
服务:其实就是作为操作的接口,主要就是实现对实体/值对象的操作
应用层服务:负责协调其他层的服务工作
领域层服务:负责与领域层实体/值对象的交互(调用领域层的实体/值)
基础层服务:负责协调基础层的对象交互
聚合:定义一组有关联的对象,作为一个数据更改的处理单元
仓储:对象集合,让开发人员保持聚焦于领域模型逻辑,将数据访问隐藏在仓储接口后面
在领域层中直接调用仓储接口,而仓储接口的实现在基础模块实现(分离接口模式)--接口定义在一个和实现分离的模块
使用分层超类型:一个类型作为层中所有类型的超类型
这里的仓储架构实现值得借鉴*可以下载相应代码进行详细阅读
在仓储的背后使用工作单元来完成数据存储的实现
实现的详细描述
基本过程为
分析领域模型以及相应之间的关系
定义项目的聚合(类图表示)
定义项目的聚合边界(界定相关类)
使用TDD编写单元测试
代码实现::::
所以个人认为本书值得借鉴的地方如下
仓储架构的实现是不错的亮点
将数据存储放到工作单元中完成是很好的封装
实现过程值得借鉴