领域驱动设计(DDD :Domain-Driven Design)相关的思考
今天,技术总监给我们上了一堂有关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