这里更像是一种思想

对业务进行拆分,通过设计模式将其分成一个一个单体,通过数据库进行管理,通过上下文(content)容器类进行获取,前台可以直观看到单个业务之间关系,也能进行管理。

这里以策略模式和责任链为例,因为他们都是代表性的

特征:业务可以抽象,有多种实现方式,之间有判断关系或互相引用关系

比如策略模式遇到的问题,项目中创建或者返回多态声明时往往遇到的:

避免不了使用if

switch (report.getCode()){case "1":pass(report);break;case "2":noPass(report);break;case "3":back(report);break;case "4":submit(report);break;}

优化方案:

将策略类注入容器的同时也把名称放到数据库中,启动时初始化时加载到容器内。通过

从容器内提取时,为了更加灵活,最好采用下面这种写法:

public <T> T getXXObject(String name,Class<T> t){}

责任链 特点是互相引用,filter之间的链表关系,需要指向下一个filter,传统都是写死,或者通过注解进行排序

如果用数据库进行管理,则可以通过数据库的next和before,在初始化时先注入到spring容器,之后通过查询数据库进行互相引用,决定先后顺序,这里就不举例了。

数据库优化java设计模式架构 策略 责任链相关推荐

  1. 《java设计模式》之责任链模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其 ...

  2. Java设计模式(十七):责任链设计模式

    1. 应用场景 一场足球赛,A队的2个组成队a.b.a队踢上半场,踢完后交给b队踢下半场,一起完成这场球赛. 吃一条鱼:妈妈吃鱼头,吃完让儿子吃鱼身体,吃完给爸爸吃鱼尾巴. Servlet容器的过滤器 ...

  3. 《JAVA设计模式系列》责任链模式

    文章目录 责任链模式 责任链模式优缺点 应用场景 责任链模式的结构 实现流程 责任链模式 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这 ...

  4. Java设计模式之双向责任链COR模式

  5. 简易理解设计模式之:责任链模式——OA中请假流程示例

    介绍: 责任链模式属于行为型设计模式.它的定义为:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理它为止. 类图: ...

  6. Java设计模式之策略模式与状态模式

    一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...

  7. 设计模式学习笔记——责任链(Chain of Responsibility)模式

    设计模式学习笔记--责任链(Chain of Responsibility)模式 @(设计模式)[设计模式, 责任链模式, chain of responsibility] 设计模式学习笔记责任链Ch ...

  8. Java设计模式之策略模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  9. Java设计模式之策略模式+工厂模式+模板模式

    Java设计模式之策略模式+工厂模式+模板模式 1.策略模式+工厂模式+模板模式 个人的理解:实际开发工程中,一些业务很复杂的逻辑使用很多的 if 或者 if···else 语句,不利于维护和扩展,为 ...

  10. java责任链设计模式 订单_Java责任链设计模式实例分析

    本文实例讲述了Java责任链设计模式.分享给大家供大家参考,具体如下: 一 代码 abstract class AbstractHandler { private Handler Handler = ...

最新文章

  1. LintCode: Max Tree
  2. 计算机应用试卷分析讲评课教案,数学试卷讲评课教案.doc
  3. UVa 10652 (简单凸包) Board Wrapping
  4. android 日历下面备注,怎样在日历的下面加备注?
  5. Oracle SQL Access Advisor 说明
  6. 基音检测 matlab,基于MATLAB基音检测分析.doc
  7. 给所有开发人员的 11 条忠告(第 4 条亮了)
  8. rman copy相关
  9. Jersey 2.x JDK 上的客户端应用
  10. 19.浏览器Window服务($window)
  11. VirtualBox安装win10虚拟机
  12. 小度计算机笔记,开售告罄、口碑炸裂、高语音交互率的小度耳机全新升级语音笔记...
  13. 工业以太网交换机常见的几种故障类型及分析排查方法
  14. web前端开发工程师的三种级别
  15. Vulkan学习(四):Shader加载 管线设置
  16. 手机和工业计算机运算能力对比,手机cpu和电脑cpu差距有多大_手机cpu跟电脑cpu差多少...
  17. Jmeter把响应数据结果保存到本地文件
  18. 模糊测试工具Sulley开发指南(3)——整体介绍
  19. 苹果手机防盗软件_魅族手机防盗拍照功能可以成功定位,比其他的防盗软件好用...
  20. 将对称分量转换为abc相量

热门文章

  1. mysql-connector-java 5.1.13,Java连MySQL,mysql-connector-java-5.1.13-bin.jar究竟要怎
  2. matmul torch 详解_python基础教程详解torch.Tensor的4种乘法
  3. 线性代数 : 方程组的几何解释
  4. 容器技术Docker K8s 15 容器服务ACK基础与进阶-容器网络管理
  5. android 控件xpath软件_请像用户使用软件一样,享受自动化测试~
  6. jupyter notebook添加虚拟环境
  7. main函数执行前后发生了什么
  8. 常见排序算法整理1(C++实现)
  9. Windows 安装kafka-python库
  10. linux valgrind 编译,valgrind 3.9交叉编译