文章目录💥
🐒设计模式的目的
设计模式是为了让程序,具有更好
设计模式常用的七大原则有:
- 🐴单一职责原则
- 🐤 接口隔离原则
- 🐫依赖倒转(倒置)原则
- 🐑里氏替换原则
- 🐘开闭原则
- 🐼迪米特法则
- 🐍合成复用原则
🐴什么叫单一职责原则?
正常的代码
在方式 1 的 run 方法中,违反了单一职责原则
解决的方案非常的简单,根据交通工具运行方法不同,分解成不同类即可
方案 2 的分析
遵守单一职责原则,但是这样做的改动很大,即将类分解,同时修改客户端
改进:直接修改 Vehicle 类,改动的代码会比较少=>方案 3
方案 3 的分析
这种修改方法没有对原来的类做大的修改,只是增加方法
这里虽然没有在类这个级别上遵守单一职责原则,但是在方法级别上,仍然是遵守单一职责
单一职责原则注意事项和细节
🐤什么叫接口隔离原则?
正常的代码
这样浪费了太多不用的接口
我们要遵循的原则:只实现改实现的接口,将接口中的类隔离出来
🐫什么叫做依赖倒转原则?
方式 1 分析
- 简单,比较容易想到
- 如果我们获取的对象是 微信,短信等等,则新增类,同时 Perons 也要增加相应的接收方法
- 解决思路:引入一个抽象的接口 IReceiver, 表示接收者, 这样 Person 类与接口 IReceiver 发生依赖,因为 Email, WeiXin 等等属于接收的范围,他们各自实现 IReceiver 接口就 ok, 这样我们就符合依赖倒转原则
依赖倒转原则的注意事项和细节
🐑什么是里氏替换原则?
分析
- 我们发现原来运行正常的相减功能发生了错误。原因就是类 B 无意中重写了父类的方法,造成原有功能出现错误。在实际编程中,我们常常会通过重写父类的方法完成新的功能,这样写起来虽然简单,但整个继承体系的复用性会比较差。特别是运行多态比较频繁的时候
- 通用的做法是:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖,聚合,组合等关系代替.
🐘什么叫开闭原则?
违反了设计模式的 ocp 原则,即对扩展开放(提供方),对修改关闭(使用方)。即当我们给类增加新功能的时候,尽量不修改代码,或者尽可能少修改代码.
思路:把创建 Shape 类做成抽象类,并提供一个抽象的 draw 方法,让子类去实现即可,这样我们有新的图形种类时,只需要让新的图形类继承 Shape,并实现 draw 方法即可,使用方的代码就不需要修-> 满足了开闭原则
🐼什么叫迪米特法则?
- 前面设计的问题在于 SchoolManager 中,CollegeEmployee 类并不是 SchoolManager 类的直接朋友(分析)
- 按照迪米特法则,应该避免类中出现这样非直接朋友关系的耦合
迪米特法则注意事项和细节
🐍什么叫合成复用原则?
🐔设计原则核心思想
- 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
- 针对接口编程,而不是针对实现编程。
- 为了交互对象之间的松耦合设计而努力
资料参考:https://www.bilibili.com/video/BV1G4411c7N4