文档章节

咕泡-spring中常用设计模式概述

Java搬砖工程师
 Java搬砖工程师
发布于 08/17 07:59
字数 861
阅读 26
收藏 0
  • 设计模式就是经验之谈,供后人借鉴,解决一些具有代表性的问题
  • 设计模式来源于生活,反过来帮助我们更好生活
  • 设计模式提升代码的可读性、可扩展性、维护成本、复杂业务问题
  • 千万不要死记硬背、每个设计模式结合实际生活、穷举法

通常说的23 中

经典设计模式可以通过下表一目了然:

  • 通常来说,设计模式都是混合使用,不会独立应用
  • 利用穷举法充分理解设计模式的应用场景
  • 在平时的应用中,不是用设计模式去生搬硬套,而是根据具体业务问题需要时借鉴

设计模式在应用中遵循六大原则:

a、开闭原则(Open Close Principle)

  • 开闭原则就是说对扩展开放,对修改关闭
  • 在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果
  • 所以一句话概括就是:为了使程序的扩展性好,易于维护和升级
  • 想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点

b、里氏代换原则(Liskov Substitution Principle)<子类基类替换原则>

  • 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一
  • 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现
  • LSP 是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为
  • 里氏代换原则是对“开-闭”原则的补充
  • 实现“开-闭”原则的关键步骤就是抽象化
  • 基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范

c、依赖倒转原则(Dependence Inversion Principle)

  • 是开闭原则的基础
  • 具体内容:针对接口编程,依赖于抽象而不依赖于具体

d、接口隔离原则(Interface Segregation Principle)

  • 使用多个隔离的接口,比使用单个接口要好
  • 还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便
  • 所以上文中多次出现:降低依赖,降低耦合

e、迪米特法则(最少知道原则)(Demeter Principle)

  • 一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立

f、合成复用原则(Composite Reuse Principle)

  • 尽量使用合成/聚合的方式,而不是使用继承

设计模式之间的关系图

© 著作权归作者所有

共有 人打赏支持
Java搬砖工程师
粉丝 26
博文 252
码字总数 149072
作品 0
南京
程序员
私信 提问
咕泡-工厂 Factory设计模式笔记

##查看代码:https://gitee.com/jly521/factoryNew.git 个人感悟: 设计模式都是处理复杂问题的,如果问题本身很简单,使用设计模式反而累赘,增加了开发的复杂性 遇到最简单的情况,直接 ne...

职业搬砖20年
08/17
0
0
这些Spring中的设计模式,你都知道吗?

设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。 Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行...

Java填坑之路
08/17
0
0
设计模式知识汇总(附github分享)

写在前面 主要内容 为了更系统的学习设计模式,特地开了这样一个基于Java的设计模式【集中营】,都是笔者在实际工作中用到过或者学习过的一些设计模式的一些提炼或者总检。慢慢地初见规模,也...

landy8530
10/10
0
0
咕泡-适配器 adapter 设计模式笔记

适配器模式(Adapter) Spring AOP 模块对BeforeAdvice、AfterAdvice、ThrowsAdvice 三种通知类型的支持实际上是借助适配器模式来实现的 这样的好处是使得框架允许用户向框架中加入自己想要支...

职业搬砖20年
09/04
0
0
Spring框架中的设计模式(三)

Spring框架中的设计模式(三) 原创: 瑞查德-Jack 在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。 本文将从描述两个创意...

瑞查德-Jack
07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql导入较大的数据文件

mysql一次导入较大的sql文件的时候会出现导入的瓶颈,用工具例如sqlyog之类的执行几十M都不行了,直接报内存不足,看来去服务器上执行sql命令才是王道。 服务器上执行有两种思路: 以Linux命...

sensy
8分钟前
0
0
Redis 基础入门

为什么需要Redis 传统的关系数据库MySQL,ORacle等的数据主要还是存储在磁盘上,虽然数据库各自都带有缓存功能,但随着业务量的增大,数据库自身的缓存终将成为瓶颈,次数如果要提供应用的效...

PeakFang-BOK
9分钟前
0
0
VS2017设置“编辑并继续”无效的问题

设置“编辑并继续” 在“工具”菜单上,单击“选项”。 在“选项”对话框中,打开“调试”节点,然后选择“编辑并继续”类别。 若要启用它,请选中“启用‘编辑并继续’”复选框。 若要禁用它...

随你疯
21分钟前
0
0
(5)添加svg支持

(5)添加svg支持 1 安装svg-sprite-loader cnpm install svg-sprite-loader --save svg-sprite-loader是一个webpack loader,可以将多个svg打包成svg-sprite。 2 配置svg-sprite-loader 我们......

neumeng
22分钟前
0
0
17-《深度拆解JVM》之即时编译(上)

一、问题引入 在第一篇中,我们简单了解过即时编译。这是一项用来提升应用程序运行效率的技术。通常而言,代码会先被 Java 虚拟机解释执行,之后反复执行的热点代码则会被即时编译成为机器码...

飞鱼说编程
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部