设计模式三大原则

单一原则

类的职责要单一,一个类完成一项功能

类本身就是一组属性和行为的集合。是一组,不是多组

开闭原则(单一原则的扩展)

对外扩展开放,对内修改关闭

即为:
1. 尽量不修改已经实现或者定义好的类,因为这个类既然已经完成实现应用在项目中,证明它会被其他许多地方调用。当修改这个类后,原本的逻辑就可能会出现问题,这个时候维护就很难了
2. 完成一个职责的类外可以定义其他类来实现不同的职责,尽可能做到一个类解决一个问题。术业有专攻

如何实现原本的类来调用其他类来实现不同的功能呢?在设计时要预留足够的接口,方便可以调用其他类来实现不同的功能。

依赖倒转原则

定义:

  1. 高层模块不应该依赖低层模块,两者都应该依赖抽象
  2. 抽象不应该依赖细节,细节应该依赖抽象

第一点解释,举个例子
高层模块可以理解为应用程序,低层模块可以理解为API。

在实现过程中,我们写的应用程序不要直接调用低层的接口,比如数据库MySQL接口。否则当数据库更换成Oracle时,我们需要对修改掉所有调用MySQL的接口(与Oracle不同的地方)
我们可以在应用程序和低层模块接口的地方设计一个抽象类,这个抽象类负责提供调用数据库接口的方法,而继承这个抽象类的子类则可以重写这些方法,是MySQL就调用MySQL的接口,是Oracle就调用Oracle相关的接口,两者互不干涉,这样修改的地方就少了

里氏替换原则

要解释第二点必须先了解里氏替换原则

只需要了解对应是含义:
子类必须能够替换它的父类类型

这代表着:父类中定义的属性和行为在子类都是完全适用的。父类的设计要设计这个事物的共性,特性放在子类作为延伸。
所以,第二点中,抽象 ->抽象类提供事物的共性(虚函数),具体特性(虚函数重写)由子类完成,而细节 -> 子类既能被父类指针指向,同时也能调用重写好的虚函数

不满足里氏替换原则即不满足依赖倒转原则

依赖倒转原则总结

1. 抽象类提供接口的数量固定不变
2. 低层模块是抽象类的子类,继承了抽象类的接口,重写了抽象类的函数
3. 高层模块想要实现的某些功能通过多态来实现(父类指针指向子类对象)

相关推荐
周努力.5 小时前
设计模式之中介者模式
设计模式·中介者模式
yangyang_z20 小时前
【C++设计模式之Template Method Pattern】
设计模式
源远流长jerry21 小时前
常用设计模式
设计模式
z263730561121 小时前
六大设计模式--OCP(开闭原则):构建可扩展软件的基石
设计模式·开闭原则
01空间1 天前
设计模式简述(十八)享元模式
设计模式·享元模式
秋名RG1 天前
深入理解设计模式之原型模式(Prototype Pattern)
设计模式·原型模式
Li小李同学Li2 天前
设计模式【cpp实现版本】
单例模式·设计模式
周努力.2 天前
设计模式之状态模式
设计模式·状态模式
268572592 天前
Java 23种设计模式 - 行为型模式11种
java·开发语言·设计模式
摘星编程2 天前
并发设计模式实战系列(19):监视器(Monitor)
设计模式·并发编程