文档章节

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

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

通常说的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)

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

设计模式之间的关系图

© 著作权归作者所有

共有 人打赏支持
职业搬砖20年
粉丝 23
博文 177
码字总数 90471
作品 0
南京
程序员
咕泡-工厂 Factory设计模式笔记

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

职业搬砖20年
08/17
0
0
咕泡-适配器 adapter 设计模式笔记

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

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

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

Java填坑之路
08/17
0
0
Spring框架中的设计模式(三)

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

瑞查德-Jack
07/19
0
0
咕泡-单例 singleton设计模式笔记

##查看代码:https://gitee.com/jly521/singleton.git 单例模式(Singleton) 应用场景:保证一个类仅有一个实例,并提供一个访问它的全局访问点 Spring 中的单例模式完成了后半句话,即提供...

职业搬砖20年
08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
120
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部