Loading

设计模式学习笔记(一)设计模式六大原则

什么是设计模式?

设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码的可靠性。平常主要有这样的三大类型:

那么这些设计模式具体会遵循哪些原则呢?

设计模式遵循的原则

1. 单一职责(Simple responsibility principle, SRP)

又叫做单一功能原则,每个类只负责一项职责。是面向对象五个基本原则之一。

  1. 原则定义:一个类只有一个发生变化的原因,否则该类应该被拆分。

    • 实现:通过控制类的粒度大小,将对象解耦、提高其内聚性(类、方法、接口)
  2. 模拟场景:将 if-else 的用户(访客用户、普通用户和VIP 用户)分类进行编写职责代码(模板模式)

2. 开闭原则(Open Closed Principle,OCP)

规定“软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修订是封闭的”

  1. 原则定义:扩展开发、修改封闭
    • 实现:通过接口或者抽象类为软件定义一个相对稳定的抽象层,将具体的变化封装在具体的实现类中
  2. 模拟场景:长方形-三角形-圆形的面积(扩展继承)

3. 里氏替换原则(Liskov Substitution Principle, LSP)

子类可以扩展父类的功能,但不能改变父类原有的功能,和Java 中的继承类似。

  1. 原则定义:兼容性、维护性和扩展性
    • 实现:子类继承父类时,可以扩展新的方法,但是因避免重写父类的方法
  2. 模拟场景:银行卡(信用卡、储蓄卡、地铁卡和饭卡)

4. 迪米特法则(Principle of Least Knowledge, PLK)

也叫做最小知识原则,意义在于降低类之间的耦合。由于每个对象尽量减少对其他对象的了解,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系

  1. 原则定义:最少知道、减少依赖
  2. 模拟场景:学生成绩和对应排名

5. 依赖倒转原则(Dependence Inversion Principle, DIP)

是实现开闭原则的重要途径,在软件设计中,具体的实现变化很多,但是抽象层相对比较稳定,因此以抽象为基础搭建起来的架构要比具体实现的要稳定的多。因此程序要依赖于抽象接口,尽量避免依赖于具体实现。

  1. 原则定义:多依赖于抽象,避免依赖于实现
    • 实现方法:
      • 每个类尽量提供接口或者抽象类
      • 任何类都不应该从具体类派生
      • 使用继承时尽量遵循里氏替换原则
  2. 模拟实现:爬取不同网页(新闻、官网、视频)使用模板模式抽象同一爬取流程,根据不同网页具体实现

6. 接口隔离原则(Interface Segregation Principle, ISP)

要求程序员尽量将臃肿庞大的接口拆分成更小和更具体的接口。

  1. 原则定义:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用
    • 实现方法:
      • 接口尽量小,但要有限度。保证单一职责原则
      • 为依赖接口的类定制服务。只提供调用者需要而方法,屏蔽不需要的方法
  2. 模拟场景:一个OA系统,外部只负责提交和撤回工作流,内部负责审核和驳回工作流

参考资料

  1. https://www.bilibili.com/video/BV1D341177SV?spm_id_from=333.1007.top_right_bar_window_history.content.click
  2. https://www.cnblogs.com/toutou/p/4870926.html#_label1
  3. https://www.cnblogs.com/huansky/p/13700861.html
posted @ 2022-03-09 23:50  归斯君  阅读(120)  评论(0编辑  收藏  举报