设计模式三大原则

单一原则

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

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

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

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

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

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

依赖倒转原则

定义:

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

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

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

里氏替换原则

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

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

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

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

依赖倒转原则总结

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

相关推荐
CodeLinghu9 小时前
【设计模式】装饰器模式(定义 | 特点 | Demo入门讲解)
设计模式·装饰器模式
云中飞鸿9 小时前
c++装饰器模式 和 多重继承区别
设计模式
翠花也老了9 小时前
状态模式(State Pattern)
java·开发语言·设计模式·状态模式
DC102012 小时前
【设计模式】行为型-状态模式
java·设计模式·状态模式
海风极客12 小时前
工作两年后,我如何看待设计模式
开发语言·后端·设计模式·golang·编程思维
吃青椒的小新14 小时前
轻松创建对象——简单工厂模式(Java实现)
java·设计模式·简单工厂模式
苟且.18 小时前
常见的设计模式
设计模式
小小写21 小时前
设计模式-代理模式和装饰者模式
设计模式·代理模式·装饰者模式
客院载论21 小时前
秋招突击——7/5——设计模式知识点补充——适配器模式、代理模式和装饰器模式
设计模式·代理模式·适配器模式
LY笔记21 小时前
JAVA设计模式-监听者模式
java·开发语言·设计模式