业务层组织模式

四种组织业务逻辑模式:事务脚本模式、活动记录模式、贫血型模式和领域模式

Transaction Script模式

  • 事务脚本模式是组织业务逻辑的模式中最简单,也是最容易理解的。采用面向过程的方式来组织业务逻辑。
  • 系统的一个流程又会被实现在为一个方法,一个方法会做完所有的事情。

优点:

  • 它是大多数开发者都能够理解的一个简单的过程模型。
  • 它能够与使用行数据入口或者表数据入口的简单数据源很好的协作。

缺点:当系统逐渐变大,业务逻辑也逐渐变复杂的时候,它的问题就会凸显出来,系统中存在大量的方法,而且方法中到处都是重复代码。


Active Record模式

  • 活动记录模式:当系统中的业务类和数据库中表存在一一对应关系的时候,可以采用这个模式。
  • 每个业务对象都代表了数据表中的一行数据,并且业务对象还包含了数据的增删改查方法
  • 每个业务对象各自负责自己的数据持久化逻辑和相关的业务逻辑

Domain Model模式

  • 在领域模型中,每个对象都承担了一部分的逻辑
  • 领域模型中的没有业务类都是对现实世界中业务概念的抽象,它不仅仅包含业务活动中的数据,还包含了业务规则
  • 把领域概念转换为业务类的过程叫“领域建模”,建模的结果就是得到业务模型。
  • 与活动记录模式区别:领域模型的业务实体对如何持久化自己的数据一无所知,并且业务类也没有必要和数据模型一一对应。

Anemic Domain Model模式与实战

  • 贫血型领域模型将与自身相关的业务处理逻辑全部转移到模型之外
  • 缺点是领域服务类中的代码更加结构化了

业务层常用的设计模式

工厂方法模式

工厂方法(Factory Method)模式:定义一个创建对象的接口,但由子类来决定要实例化的类是哪个。主要目的就是隐藏对象的创建。

在工厂方法模式中体现了DIP依赖倒置原则。

装饰者模式

装饰者模式体现了一个很重要的设计思想:优先采用组合。而不是继承。

模板方法模式

  • 模板方法模式定义了一个操作算法的骨架,而将一些步骤延迟到了子类。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
  • 最直观的理解就是“模板”:包括变化和不变得两个部分,将变化的部分给子类实现。
  • 模板方法中有定义“钩子”。钩子是一种被声明在抽象类中的方法。

状态模式

状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

策略模式

  • 策略模式定义了一系列算法,并将它们分别封装了起来,让它们之间可以相互替换。
  • 此模式让算法的变化独立于使用算法的客户

业务层常用的企业架构模式

层超类型模式

层超类型(layer Super),让某个类型充当一层所有类型的超类。

层超类型模式的思想极为简单:通过继承达到重用的目的。

转载于:https://www.cnblogs.com/wxc-kingsley/p/7542838.html

架构与设计的流程和核心概念笔记:三、业务层设计相关推荐

  1. 华为:流程的核心是要反映业务的本质

    "流程的核心是要反映业务的本质,还原以后,该是谁的就是谁的.管理不要在流程体系外循环." 此文为华为前副总裁费敏关于流程化组织建设的讲话,详细地讲解了华为在流程型组织建设中遇到的问 ...

  2. 《响应式Web设计全流程解析》一1.2 静态设计稿舒适区

    本节书摘来异步社区<响应式Web设计全流程解析>一书中的第1章,第1.2节,作者: [美]Stephen Hay 译者: 余果 , 等 责编: 赵轩,更多章节内容可以访问云栖社区" ...

  3. 从入门到入土(十)RocketMQ集群流程以及核心概念

    精彩推荐 一百期Java面试题汇总 SpringBoot内容聚合 IntelliJ IDEA内容聚合 Mybatis内容聚合 接上一篇:从入门到入土(九)手摸手教你搭建RocketMQ双主双从同步集群 ...

  4. 浅谈电商核心「订单」业务如何设计

    三分恶 2023-05-30 10:20 发表于北京 以下文章来源于知了一笑 ,作者知了一笑 知了一笑. 积累.总结.用心记录. 订单,业务的核心模块: 一.背景简介 订单业务一直都是系统研发中的核心 ...

  5. 设计心理学中的重要概念(三)头脑中的知识与外界知识

    接下来我们进入 第三章 头脑中的知识与外界知识 一.含糊的知识引导精确的行为.为什么含糊的知识可以引导精确的行为? 1.知识同时存储于头脑中和外部世界.这里主要的是,外部世界其实也存储着知识.比如电脑 ...

  6. 面向对象设计原则-Principles and Patterns读书笔记三

    原作者 Robert C. Martin 原文:http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf 引 ...

  7. 华为轮值主席:公司管理核心就这三个流程LTC/IPD/ITR

    01 解决问题的方法 做事的方法是:先找到问题,然后找到根因,再找到解决措施,最后要关闭. 核心就是一个:还原这个事情的本质,还原以后该是谁的,就是谁的. 循此道理:流程的核心是要反映业务的本质. 比 ...

  8. DDD战略设计相关核心概念的理解

    前言 本文想再讨论一下关于领域.业务.业务模型.解决方案.BC.领域模型.微服务这些概念的含义和关系.初衷是我发现现在DDD领域建模以及解决方案落地过程中,常常对这些概念理解不清楚或者有歧义,导致我们 ...

  9. SSM Chapter 05 Spring 核心概念

    SSM Chapter 05 Spring 核心概念 笔记 本章目标: 理解Spring IoC的原理 掌握Spring IoC的配置 理解Spring AOP的原理 掌握Spring AOP的配置 ...

  10. 计算机系统核心概念及软硬件,《计算机系统:核心概念及软硬件实现》【摘要 书评 在线阅读】-苏宁易购图书...

    本书清晰.详细.循序渐进地展示了计算机组成.汇编语言和计算机体系结构中的核心思想.本书的很大一部分是建立在一个虚构的计算机Pep/8基础上的,用它来讲解经典的冯·诺依曼机器的基本概念.这种方法的好处是 ...

最新文章

  1. Python访问MySQL数据库并实现其增删改查功能
  2. MHA监控进程异常退出(MHA版本:0.56)
  3. mysql使用索引下推的好处_mysql的索引下推理解和实践
  4. 女程序员做了个梦。。。
  5. 漫步最优化六——数学规划
  6. 语言 高速公路超速处罚_880关注 拆除!高速公路不合理限速标志!
  7. mybatis SqlMapConfig.xml
  8. 服务器不支持mysql_服务器不支持 MySql 数据库的解决方法
  9. Android 裁切踩坑
  10. 【numpy】argmax参数辨析(axis=0,axis=1,axis=-1)
  11. 广电光猫超级管理员账号及光猫改桥接模式教程
  12. 虚拟机VMware插入U盘操作系统崩溃死机的解决方法
  13. python猜数字游戏编程、直到猜对为止显示猜了几次_python编写猜数字小游戏
  14. 关于卸载office的问题:office无法卸载的办法(附office安装和注册表查看)
  15. Android仿微信朋友圈九宫格图片展示自定义控件,支持缩放动画~
  16. react开发公众号踩坑日志
  17. sklearn机器学习:泰坦尼克号幸存者的预测
  18. 基于python的视频监控系统_Python远程视频监控程序
  19. 科创板、香港主板、纳斯达克三地部门上市条件和要求
  20. 用mask-rcnn训练自己的数据

热门文章

  1. JAVA的静态函数不能重载,可以覆盖(隐藏)
  2. 催眠与大脑的信息处理
  3. python读取excel数据生成word_利用Python将excel数据读取到word表格
  4. VS F5自动编译 F5不自动编译
  5. data image转换图片php,PHP 将dataurl转成图片image方法总结
  6. Emacs中打造强大的Python IDE
  7. 现有Android项目中集成Flutter/Flutter混合开发实战(一)
  8. 为什么要有事件循环机制(Event Loop)
  9. Bootstrap相关优质项目推荐
  10. spring boot 创建第一个