架构与设计的流程和核心概念笔记:三、业务层设计
业务层组织模式
四种组织业务逻辑模式:事务脚本模式、活动记录模式、贫血型模式和领域模式
Transaction Script模式
- 事务脚本模式是组织业务逻辑的模式中最简单,也是最容易理解的。采用面向过程的方式来组织业务逻辑。
- 系统的一个流程又会被实现在为一个方法,一个方法会做完所有的事情。
优点:
- 它是大多数开发者都能够理解的一个简单的过程模型。
- 它能够与使用行数据入口或者表数据入口的简单数据源很好的协作。
缺点:当系统逐渐变大,业务逻辑也逐渐变复杂的时候,它的问题就会凸显出来,系统中存在大量的方法,而且方法中到处都是重复代码。
Active Record模式
- 活动记录模式:当系统中的业务类和数据库中表存在一一对应关系的时候,可以采用这个模式。
- 每个业务对象都代表了数据表中的一行数据,并且业务对象还包含了数据的增删改查方法
- 每个业务对象各自负责自己的数据持久化逻辑和相关的业务逻辑
Domain Model模式
- 在领域模型中,每个对象都承担了一部分的逻辑
- 领域模型中的没有业务类都是对现实世界中业务概念的抽象,它不仅仅包含业务活动中的数据,还包含了业务规则
- 把领域概念转换为业务类的过程叫“领域建模”,建模的结果就是得到业务模型。
- 与活动记录模式区别:领域模型的业务实体对如何持久化自己的数据一无所知,并且业务类也没有必要和数据模型一一对应。
Anemic Domain Model模式与实战
- 贫血型领域模型将与自身相关的业务处理逻辑全部转移到模型之外
- 缺点是领域服务类中的代码更加结构化了
业务层常用的设计模式
工厂方法模式
工厂方法(Factory Method)模式:定义一个创建对象的接口,但由子类来决定要实例化的类是哪个。主要目的就是隐藏对象的创建。
在工厂方法模式中体现了DIP依赖倒置原则。
装饰者模式
装饰者模式体现了一个很重要的设计思想:优先采用组合。而不是继承。
模板方法模式
- 模板方法模式定义了一个操作算法的骨架,而将一些步骤延迟到了子类。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
- 最直观的理解就是“模板”:包括变化和不变得两个部分,将变化的部分给子类实现。
- 模板方法中有定义“钩子”。钩子是一种被声明在抽象类中的方法。
状态模式
状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
策略模式
- 策略模式定义了一系列算法,并将它们分别封装了起来,让它们之间可以相互替换。
- 此模式让算法的变化独立于使用算法的客户
业务层常用的企业架构模式
层超类型模式
层超类型(layer Super),让某个类型充当一层所有类型的超类。
层超类型模式的思想极为简单:通过继承达到重用的目的。
转载于:https://www.cnblogs.com/wxc-kingsley/p/7542838.html
架构与设计的流程和核心概念笔记:三、业务层设计相关推荐
- 华为:流程的核心是要反映业务的本质
"流程的核心是要反映业务的本质,还原以后,该是谁的就是谁的.管理不要在流程体系外循环." 此文为华为前副总裁费敏关于流程化组织建设的讲话,详细地讲解了华为在流程型组织建设中遇到的问 ...
- 《响应式Web设计全流程解析》一1.2 静态设计稿舒适区
本节书摘来异步社区<响应式Web设计全流程解析>一书中的第1章,第1.2节,作者: [美]Stephen Hay 译者: 余果 , 等 责编: 赵轩,更多章节内容可以访问云栖社区" ...
- 从入门到入土(十)RocketMQ集群流程以及核心概念
精彩推荐 一百期Java面试题汇总 SpringBoot内容聚合 IntelliJ IDEA内容聚合 Mybatis内容聚合 接上一篇:从入门到入土(九)手摸手教你搭建RocketMQ双主双从同步集群 ...
- 浅谈电商核心「订单」业务如何设计
三分恶 2023-05-30 10:20 发表于北京 以下文章来源于知了一笑 ,作者知了一笑 知了一笑. 积累.总结.用心记录. 订单,业务的核心模块: 一.背景简介 订单业务一直都是系统研发中的核心 ...
- 设计心理学中的重要概念(三)头脑中的知识与外界知识
接下来我们进入 第三章 头脑中的知识与外界知识 一.含糊的知识引导精确的行为.为什么含糊的知识可以引导精确的行为? 1.知识同时存储于头脑中和外部世界.这里主要的是,外部世界其实也存储着知识.比如电脑 ...
- 面向对象设计原则-Principles and Patterns读书笔记三
原作者 Robert C. Martin 原文:http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf 引 ...
- 华为轮值主席:公司管理核心就这三个流程LTC/IPD/ITR
01 解决问题的方法 做事的方法是:先找到问题,然后找到根因,再找到解决措施,最后要关闭. 核心就是一个:还原这个事情的本质,还原以后该是谁的,就是谁的. 循此道理:流程的核心是要反映业务的本质. 比 ...
- DDD战略设计相关核心概念的理解
前言 本文想再讨论一下关于领域.业务.业务模型.解决方案.BC.领域模型.微服务这些概念的含义和关系.初衷是我发现现在DDD领域建模以及解决方案落地过程中,常常对这些概念理解不清楚或者有歧义,导致我们 ...
- SSM Chapter 05 Spring 核心概念
SSM Chapter 05 Spring 核心概念 笔记 本章目标: 理解Spring IoC的原理 掌握Spring IoC的配置 理解Spring AOP的原理 掌握Spring AOP的配置 ...
- 计算机系统核心概念及软硬件,《计算机系统:核心概念及软硬件实现》【摘要 书评 在线阅读】-苏宁易购图书...
本书清晰.详细.循序渐进地展示了计算机组成.汇编语言和计算机体系结构中的核心思想.本书的很大一部分是建立在一个虚构的计算机Pep/8基础上的,用它来讲解经典的冯·诺依曼机器的基本概念.这种方法的好处是 ...
最新文章
- Python访问MySQL数据库并实现其增删改查功能
- MHA监控进程异常退出(MHA版本:0.56)
- mysql使用索引下推的好处_mysql的索引下推理解和实践
- 女程序员做了个梦。。。
- 漫步最优化六——数学规划
- 语言 高速公路超速处罚_880关注 拆除!高速公路不合理限速标志!
- mybatis SqlMapConfig.xml
- 服务器不支持mysql_服务器不支持 MySql 数据库的解决方法
- Android 裁切踩坑
- 【numpy】argmax参数辨析(axis=0,axis=1,axis=-1)
- 广电光猫超级管理员账号及光猫改桥接模式教程
- 虚拟机VMware插入U盘操作系统崩溃死机的解决方法
- python猜数字游戏编程、直到猜对为止显示猜了几次_python编写猜数字小游戏
- 关于卸载office的问题:office无法卸载的办法(附office安装和注册表查看)
- Android仿微信朋友圈九宫格图片展示自定义控件,支持缩放动画~
- react开发公众号踩坑日志
- sklearn机器学习:泰坦尼克号幸存者的预测
- 基于python的视频监控系统_Python远程视频监控程序
- 科创板、香港主板、纳斯达克三地部门上市条件和要求
- 用mask-rcnn训练自己的数据