张逸的《领域驱动战略设计实战》地址,付费的,价格¥59,还能接受。git
领域驱动设计可能会给你带来的收获,下面几点来自于原文,建议读者阅读原文:算法
领域驱动设计(Domain Driven Design,DDD)是Eric Evans提出的综合软件系统分析和设计的面向对象建模方法。它改变了传统软件开发工程师针对数据库进行的建模方法,从而将要解决的业务概念和业务规则转换为软件系统中的类型一级类型的属性与行为,经过合理运用面向对象的封装、继承和多态等设计要素。仔细想一想,咱们在开发项目时,是否是只是思考数据库的设计,围绕着数据库进行各类操做的呢!数据库
领域驱动设计是一套方法论,它创建了以领域为核心驱动力的设计体系,具备必定的开放性。领域驱动设计强调领域模型的重要性,并经过模型驱动设计来保障领域模型与程序设计的一致。因此必定要甄别出领域模型?架构
领域驱动设计贯穿了整个软件开发的生命周期,包括对需求的分析、建模、架构、设计,甚至最终的编码实现,乃至对编码的测试与重构,真是这样?微服务
领域驱动设计围绕着领域模型进行设计,经过分层架构(Layered Architecture)将领域独立出来。表示领域模型的对象包括:实体、值对象和领域服务,领域逻辑都应该封装在这些对象中。领域逻辑都封装在这些对象中?这是否是意味着富血模型。这样严格的设计原则能够避免业务逻辑渗透到领域层以外,致使技术实现与业务路基的混淆。测试
战略设计会控制和分解战术设计的边界与粒度,战术设计则以实证角度验证领域模型的有效性、完整性、一致性,进而以演进的方式对以前的战略设计阶段进行迭代,从而造成一种螺旋式上升的迭代设计过程。编码
面对客户的业务需求,由领域专家与开发团队展开充分的交流,通过需求分析与知识提炼,以得到清晰的问题域。难点在于需求分析、知识提炼。辅以分层架构与六边形架构划分系统的逻辑边界与物理边界,界定领域与技术之间的界限。以后进入战术设计阶段,深刻到限界上下文内对领域进行建模,并以领域模型指导程序设计与编码实现。若在实现过程当中,发现领域模型存在重复、错位或缺失时,再进而对已有模型进行重构,甚至从新划分限界上下文。spa
经过对问题域进行分析和建模,识别限界上下文,利用它划分相对独立的领域,再经过上下文映射创建它们之间的关系,架构设计
学会对设计的本质思考,不要只限于设计概念的掌握,要追求对设计原则与方法的融汇贯通。设计
致使软件复杂度的成因是规模、结构、变化三要素,要控制复杂度,就须要对他们进行各个击破。
可进化性、可拓展性、可定制性。
可进化性:可划分设计单元的边界,肯定各个设计单元应该履行的职责以及须要与其余设计单元协做的接口。因为每一个单元有本身的边界,边界内的实现细节不会影响到外部的其它单元,因此,咱们很容易的替换单元内部的细节,保证他们的可进化性。
可拓展性:首先要识别软件系统的变化点,常见的变化点包括业务规则、算法策略、外部服务、协议标准、数据格式、业务流程、系统配置等。处理这些变化点的核心就是"封装",经过隐藏细节、引入间接等方式来隔离变化、下降耦合。
可定制型:感受可定制性与可拓展性有点相似。
有些地方,还不理解,更新中......