学习设计模式的作用
设计模式:是前辈对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,,而是一套用来提高代码可复用性,可维护性、可读性、稳健性以及安全性的解决方案。
GOF23:四人帮/四人组出版了23种设计模式。
设计模式:的本质是面向对象设计原则的实际运用,是对类的封装、继承、多态以及类的关联关系和组合关系的充分理解。
优点: 提高程序员的思维能力、编程能力、设计能力。
面向对象的七大原则(OOP)
开闭原则:对扩展开发,对修改关闭。
里式替换原则:继承必须确保超类所拥有的闲置在子类中任然成立。不要改变父类原有的代码功能(正方形不是长方形)
依赖倒转原则:要面向接口编程,不要面向实现编程。
单一职责原则:控制类的颗粒大小,将对象解耦、提高其内聚性。
接口隔离原则:要为各个类建立他们所需要的专用接口
迪米特法则:只与你的直接朋友交谈,不跟陌生人说话。
合成复用原则:尽量先使用组合或者聚合等关联
工厂模式
实现了创建者和调用者的分离
分类:
简单工厂模式 :用来生产同一等级结构的任意产品(对于增加新的产品,需要涵盖已有的代码)
工厂方法模式:用来生产同一等级的固定产品(支持增加任意产品)
抽象工厂模式:围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的过程
简单工厂模式、工厂方法模式和抽象工厂模式是三种常见的创建型设计模式,它们都用于解决对象创建的问题,但在实现方式和使用场景上有所差异。
-
简单工厂模式(Simple Factory Pattern):
- 简单工厂模式通过一个工厂类,根据客户端的请求返回相应的产品类实例。
- 客户端只需要知道工厂类和产品类之间的关系,而不关心具体的产品类如何创建。
- 简单工厂模式违背了开放封闭原则,当需要添加新的产品类时,需要修改工厂类的代码。
-
工厂方法模式(Factory Method Pattern):
- 工厂方法模式将对象的创建延迟到子类中,每个具体的产品类对应一个具体的工厂类,客户端通过调用工厂类来创建对象。
- 抽象工厂类定义一个创建产品的接口,由子类具体实现。
- 工厂方法模式通过继承来实现对象创建,符合开放封闭原则,可以方便地添加新的产品类和工厂类。
-
抽象工厂模式(Abstract Factory Pattern):
- 抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的产品对象。
- 客户端通过调用抽象工厂接口来创建产品对象,具体实现由具体工厂类完成。
- 抽象工厂模式用于创建一系列相关的产品对象,适用于产品族的创建。
总结:
- 简单工厂模式适用于单一产品的创建,通过一个工厂类来创建不同的产品对象。
- 工厂方法模式适用于多种产品的创建,每个产品对应一个具体的工厂类,通过继承来实现对象的创建。
- 抽象工厂模式适用于一系列相关或相互依赖的产品对象的创建,由抽象工厂接口定义创建方法,具体实现由具体工厂类完成。
工厂模式核心本质:
实例化对象不需要new 用工厂方法代替
将选择实现类,创建对象统一管理和控制。从而将调用者跟我们实现类解耦。