0
点赞
收藏
分享

微信扫一扫

我终于读懂了设计模式的七大原则。。。

迎月兮 2022-10-13 阅读 193

文章目录💥

🐒设计模式的目的

设计模式是为了让程序,具有更好

设计模式常用的七大原则有:

  1. 🐴单一职责原则
  2. 🐤 接口隔离原则
  3. 🐫依赖倒转(倒置)原则
  4. 🐑里氏替换原则
  5. 🐘开闭原则
  6. 🐼迪米特法则
  7. 🐍合成复用原则

🐴什么叫单一职责原则?

正常的代码

在这里插入图片描述
在方式 1 的 run 方法中,违反了单一职责原则

解决的方案非常的简单,根据交通工具运行方法不同,分解成不同类即可

在这里插入图片描述

方案 2 的分析

遵守单一职责原则,但是这样做的改动很大,即将类分解,同时修改客户端
改进:直接修改 Vehicle 类,改动的代码会比较少=>方案 3

在这里插入图片描述
方案 3 的分析

这种修改方法没有对原来的类做大的修改,只是增加方法
这里虽然没有在类这个级别上遵守单一职责原则,但是在方法级别上,仍然是遵守单一职责

单一职责原则注意事项和细节

🐤什么叫接口隔离原则?

正常的代码

在这里插入图片描述

这样浪费了太多不用的接口

在这里插入图片描述

我们要遵循的原则:只实现改实现的接口,将接口中的类隔离出来

🐫什么叫做依赖倒转原则?

在这里插入图片描述
方式 1 分析

  • 简单,比较容易想到
  • 如果我们获取的对象是 微信,短信等等,则新增类,同时 Perons 也要增加相应的接收方法
  • 解决思路:引入一个抽象的接口 IReceiver, 表示接收者, 这样 Person 类与接口 IReceiver 发生依赖,因为 Email, WeiXin 等等属于接收的范围,他们各自实现 IReceiver 接口就 ok, 这样我们就符合依赖倒转原则
    在这里插入图片描述

依赖倒转原则的注意事项和细节

🐑什么是里氏替换原则?

在这里插入图片描述
分析

  • 我们发现原来运行正常的相减功能发生了错误。原因就是类 B 无意中重写了父类的方法,造成原有功能出现错误。在实际编程中,我们常常会通过重写父类的方法完成新的功能,这样写起来虽然简单,但整个继承体系的复用性会比较差。特别是运行多态比较频繁的时候
  • 通用的做法是:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖,聚合,组合等关系代替.
    在这里插入图片描述

🐘什么叫开闭原则?

在这里插入图片描述
违反了设计模式的 ocp 原则,即对扩展开放(提供方),对修改关闭(使用方)。即当我们给类增加新功能的时候,尽量不修改代码,或者尽可能少修改代码.

在这里插入图片描述
思路:把创建 Shape 类做成抽象类,并提供一个抽象的 draw 方法,让子类去实现即可,这样我们有新的图形种类时,只需要让新的图形类继承 Shape,并实现 draw 方法即可,使用方的代码就不需要修-> 满足了开闭原则

🐼什么叫迪米特法则?

在这里插入图片描述

  1. 前面设计的问题在于 SchoolManager 中,CollegeEmployee 类并不是 SchoolManager 类的直接朋友(分析)
  2. 按照迪米特法则,应该避免类中出现这样非直接朋友关系的耦合
    在这里插入图片描述
    迪米特法则注意事项和细节

🐍什么叫合成复用原则?

🐔设计原则核心思想

  1. 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
  2. 针对接口编程,而不是针对实现编程。
  3. 为了交互对象之间的松耦合设计而努力

资料参考:https://www.bilibili.com/video/BV1G4411c7N4

举报

相关推荐

0 条评论