模式设计的构造块

分离领域

主要将领域层从系统中隔离出来;这样有利于集中修改,也有利于业务知识的传递和学习;php

layered architecture目前比较主流的分层模式:前端

  • 用户交互层;想用户显示信息和解释用户指令; 通常而言的指前端和controller层

-应用层 定义软件要完成的任务,调用领域层来完成任务;但不要涉及具体的业务规则和知识;要尽可能简单;java

  • 领域层 表达业务概念,业务规则,业务状态信息;是软件的核心架构

  • 基础设施层 为上面三层提供技术支持;如提供消息服务,持久化服务,通讯服务框架

如今大部分使用架构框架来时实现基础设施层.侵入性较强dom

Smart UI

被认为是反模型;用ui图来表达业务逻辑.适合小项目,好比php的项目,但不适合复杂的业务系统.;学习

模型

关联:现实中的关联很是多,然须要限制它,以减小建模复杂度;向业务方向限制;如将多对多降级为一对多;ui

设计中的entity,service与java中的概念不一样;设计

entity: 表示某种具备连续性和标志的事物对象;某个事物的属性可能发生变化,用标志来区分事物.对象

value object :表示某种状态属性;这类事物原则上是不可变的,不须要标志;能够进行共享或复用

service:有些领域概念是动做或活动;当一个动做涉及几个entity时,就须要将它单独放在service中;中等粒度的service有时是区分领域最好的形式

Module

module是更粗粒度的结构;模块应该是高内聚,低耦合的;将一组有关联的entity,vo,service聚合在一块儿;在聚合中体现出领域驱动设计;体现出domain层;

建模范式

目前面向对象的范式最流行;但包含大量数学与逻辑推理领域则不适用面向对象,它们自己就是面向过程. 设计范式不一样于实现范式;

  • 模型模型不等于对象模型
  • 混合范式 包括对象,规则,工做流;集成时需注意:不要与实现范式对抗,把通用语言做为基础;

领域对象的生命周期

聚合,工厂,仓库;aggregate,factory,repository

聚合

指定一个聚合根entity,在聚合范围内,全部的操做都要经过聚合根实现,全部的固定规则都必须实现;实现一个小范围内的闭环;

根,边界,固定规则;

工厂

提供新建或复制entity是领域的功能;工厂方法或工厂服务,构造器建立三种;

工厂方法:抽象工厂模式,构造器模式,建立要知足固定规则;

仓库

repository主要负责持久化工做,与factory结合,完成对象的新增和重建;

相关文章
相关标签/搜索