文档章节

模式设计的构造块

流光韶逝
 流光韶逝
发布于 2016/12/03 15:00
字数 783
阅读 12
收藏 0

分离领域

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

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

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

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

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

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

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

Smart UI

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

模型

关联:现实中的关联非常多,然需要限制它,以减少建模复杂度;向业务方向限制;如将多对多降级为一对多;

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

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

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

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

Module

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

建模范式

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

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

领域对象的生命周期

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

聚合

指定一个聚合根entity,在聚合范围内,所有的操作都要通过聚合根实现,所有的固定规则都必须实现;实现一个小范围内的闭环;

根,边界,固定规则;

工厂

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

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

仓库

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

© 著作权归作者所有

流光韶逝
粉丝 21
博文 123
码字总数 143360
作品 0
济南
程序员
私信 提问
设计模式1(创建型)

类设计考虑的问题 1.类的组织与表示 聚类分析、类的再抽象、类的拆分、类的复用性... ... 2.行为的组织与表示 行为的分解、行为的参与者、行为的分组与接口、行为的差异... ... 3.属性的组织...

大海画家
2017/11/05
0
0
软考之UML图深入学习(1)

前言 软考的准备已经过去了2个月零8天,倒计时8天(11月11日)。通过近年试题的分析,面向对象技术试题在150分中占据了大约1/3的比重,足见其重要性和基础性。下午试题中的UML图面向对象设计...

m18633778874
2017/11/03
0
0
Java进阶1 —— 对象的创建与销毁

原文链接:http://www.javacodegeeks.com/2015/09/how-to-create-and-destroy-objects.html 本文是Java进阶课程的第一部分。 本课程的目标是帮你更有效的使用Java。其中讨论了一些高级主题,...

牧曦之晨
09/29
0
0
黑马程序员——面向对象篇之封装

------- android培训、java培训、期待与您交流! ---------- 面向对象特点: 1:将复杂的事情简单化。 2:面向对象将以前的过程中的执行者,变成了指挥者。 3:面向对象这种思想是符合现在人...

optimisticpig
2014/04/06
0
0
设计模式-原型模式

原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式核心是一个clone方法,通过该方法进行对象的拷贝。实现cloneable中的clone方法。 通用代码: public...

真爱2015
2016/01/04
81
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊nacos的notifyConfigInfo

序 本文主要研究一下nacos的notifyConfigInfo CommunicationController nacos-1.1.3/config/src/main/java/com/alibaba/nacos/config/server/controller/CommunicationController.java @Cont......

go4it
昨天
4
0
队列-顺序(c/c++实现)

队列是在线性表功能稍作一改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。 队列(顺序)实现的三个步骤: 定义所需的功能(...

白客C
昨天
5
0
安装tomcat部署网站/nginx代理tomcat/tomcat部署多个网站

来源:https://blog.csdn.net/Powerful_Fy 安装jdk: Oracle官方下载 https://www.oracle.com/technetwork/java/javase/downloads/index.html yum安装openjdk: 1.查找可使用的jdk包: [roo......

asnfuy
昨天
4
0
Linux 安装 Android studio

官网下载linux 版本 android xxxxx-xxxx.tar.gz 然后 找到它 解压缩 得到 android-studio文件夹 执行 [root@monkey java]# mv ./android-studio /opt [root@monkey java]# cd /opt/android-s......

MrLins
昨天
6
0
VMware vSphere虚拟机的迁移

VMware vSphere 6.7下,虚拟机的迁移按照移动的内容,可以分为4种: 1)冷迁移(cold migration) 2)热迁移(vMotion) 3)存储热迁移(storage vMotion) 4)完全热迁移(shared-nothing ...

大别阿郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部