设计模式学习

面向对象的设计原则,五个

SOLID指代了面向对象编程面向对象设计的五个基本原则

名称 缩写 全称 解释
单一职责原则 SRP Single Responsibility Principle 每个类的职责单一
开闭原则 OCP Open Closed Principle 类的改动,增加代码是好的,修改源代码是不好的
里氏替换原则 LSP Liskov Substitution Principle 多态
接口隔离原则 ISP Interface Segregation Principle 接口隔离
依赖倒置原则 DIP Dependence Inversion Principle 依赖抽象接口
—— —— —— ——
迪米特法则 LoD Law of Demeter 一个对象应当对其他对象少了解
组合/聚合复用原则 CRP Composite/Aggregate Reuse Principle 继承不好,组合好的

总体原则:高聚合,低耦合

6.迪米特法则

解释:
去公司找人修电脑,不应该去找某个具体的小李、小张来修,应该抽象出一个接口类,IT部门,找IT部门修,用抽象接口再去对接实际的类,不然找小张解决不了问题,找小李解决不了问题。
结论:迪米特法则强调了类之间的松耦合关系,类之间的耦合越松,越有利于复用。

简单工厂模式

概述:

本来每个类都需要new出来,现在是通过一个工厂来创建

优点:

1.客户端和具体实现类解耦
2.对于某些对象创建过程比较复杂情况,我们不用考虑这些了

缺点:

1.简单工厂模式,增加新的功能是通过修改源代码实现,不符合开闭原则
2.这个类职责过重,这个类发生问题,会影响很多实用这个工厂的模块

使用场景:

1.工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中个的业务逻辑太过复杂。
2.客户端只知道传入工厂类的参数,对于如何创建对象并不关心。
解释:用在不需要关心创建过程,读取什么文件,什么什么的,就想要用这个类
比如创建过程很复杂,但是我只是想用这个类,那我就用这个简单工厂创建一下就行,具体的创建过程都放在工厂里面

工厂模式

概述:

对于每一个类,都对应一个具体创建的工厂类,然后再定义一个抽象工厂作为接口
简单工厂模式 + “开闭原则” = 工厂方法模式

优点:

1.不需要记住具体类名,甚至连具体参数都不用记忆(因为用的是抽象的工厂接口)
2.实现了对象创建和使用的分离。
3.系统的可扩展性也就变得非常好,无需修改接口和原类。(符合开闭原则)

缺点:

1.增加系统中类的个数,复杂度和理解度增加。
2.增加了系统的抽象性和理解难度。

适用场景

1.客户端不知道它所需要的对象的类。
2.抽象工厂类通过其子类来指定创建哪个对象。

工厂在这里面起的作用,就是隐藏了创建过程的复杂度,以配合InterfaceA对那一百个子类的复杂度进行隐藏,这样B只要知道上转型之后的InterfaceA即可,简单清晰。

参考文献

https://blog.csdn.net/weixin_42636062/category_11313224.html?spm=1001.2014.3001.5482