今天,技术总监给我们上了一堂有关DDD 的课程,感触颇多,特此记录!
1、问题
1.1、面向对象
虽然一直在说面向对象编程,但实际开发中一直没有做深入思考,更谈不上去用了,惭愧。
一个Class要有属性和行为,属性是对状态的描述,而行为是对属性进行改变所做的一些操作。当前项目中也有太多的残缺类(一个实体类中只有getter和setter 方法,基本上没有什么行为,故曰残缺类)。
我们来看一下 java.util.ArrayList.java,该类中的属性只有一个:
transient Object[] elementData; // non-private to simplify nested class access
其他的像grow()、indexOf()等方法都是对该属性的操作,而且方法数远远大于属性,这才是一个正确的类,我们要对属性进行深入分析,发掘其一系列行为,让其变得高内聚、松耦合。
2、领域驱动设计思想及发展
2004年Eric Evans在其书中《领域驱动设计—软件核心复杂性应对之道》提出了“领域驱动设计(简称DDD)”的概念。
此后一批专家陆续出版了DDD相关的书籍,丰富了领域驱动设计的实践,其中有<Applying Domain-Driven Design and Patterns> <Domain-Driven Design Quickly> <Domain-Driven Design Using Naked Objects> <Implementing Domain Driven Design>等等。
领域驱动设计通过“通用语言”、“限界上下文”,“分层架构”、“实体”、“值对象” 、“聚合根”等等扩展到系统分析和架构、及具体实现上。
领域驱动设计的主要组成要素:
来源:CSDN
作者:songzi1228
链接:https://blog.csdn.net/songzi1228/article/details/104778834