玄子Share 设计模式 GOF 全23种 + 七大设计原则
目录
GoF(Gang of Four)
GoF(Gang of Four)是四位计算机科学家(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)在1994年出版的书籍《设计模式:可复用面向对象软件的基础》中提出的一种设计模式分类和解决方案。该书介绍了23种常用的设计模式,分为创建型、结构型和行为型三大类。这本书的社会认可度非常高,被公认为设计模式领域的经典之作。
- 影响深远:GoF的设计模式成为了软件工程领域的经典之一,对于软件设计和架构具有广泛的应用。许多软件开发人员和团队都在日常工作中使用这些模式来解决常见的设计问题。
- 经典的设计原则:GoF的设计模式不仅提供了具体的解决方案,还强调了面向对象设计的一些重要原则,如封装、继承、多态和接口分离等。
- 共同的设计术语:GoF提出的模式在软件开发社区中创建了共同的设计术语和设计思维方式,使得开发人员之间更容易进行沟通和理解。
- 可复用性和可维护性:通过应用这些设计模式,开发人员可以更好地设计出具有可复用性和可维护性的软件系统,降低了代码的耦合性。
总的来说,GoF的设计模式在软件开发领域得到了广泛的认可和应用,成为了许多软件开发人员必备的知识和工具之一。它为软件设计和架构提供了有力的指导,帮助开发人员构建高质量、可扩展的软件系统。
创建型模式(Creational Patterns)
序号 | 中文名称 | 英文名称 | 所用设计原则 |
---|---|---|---|
1 | 工厂方法模式 | Factory Method Pattern | SRP、OCP、LSP、DIP |
2 | 抽象工厂模式 | Abstract Factory Pattern | SRP、OCP、LSP、DIP |
3 | 单例模式 | Singleton Pattern | SRP、OCP、LSP、DIP |
4 | 原型模式 | Prototype Pattern | SRP、OCP、LSP、DIP |
5 | 建造者模式 | Builder Pattern | SRP、OCP、LSP、DIP |
结构型模式(Structural Patterns)
序号 | 中文名称 | 英文名称 | 所用设计原则 |
---|---|---|---|
6 | 适配器模式 | Adapter Pattern | SRP、OCP、LSP、ISP、DIP |
7 | 桥接模式 | Bridge Pattern | SRP、OCP、LSP、ISP、DIP |
8 | 组合模式 | Composite Pattern | SRP、OCP、LSP、ISP、DIP |
9 | 装饰模式 | Decorator Pattern | SRP、OCP、LSP、ISP、DIP |
10 | 外观模式 | Facade Pattern | SRP、OCP、LSP、ISP、DIP |
11 | 享元模式 | Flyweight Pattern | SRP、OCP、LSP、ISP、DIP |
12 | 代理模式 | Proxy Pattern | SRP、OCP、LSP、ISP、DIP |
行为型模式(Behavioral Patterns)
序号 | 中文名称 | 英文名称 | 所用设计原则 |
---|---|---|---|
13 | 责任链模式 | Chain of Responsibility Pattern | SRP、OCP、LSP、ISP、DIP |
14 | 命令模式 | Command Pattern | SRP、OCP、LSP、ISP、DIP |
15 | 解释器模式 | Interpreter Pattern | SRP、OCP、LSP、ISP、DIP |
16 | 迭代器模式 | Iterator Pattern | SRP、OCP、LSP、ISP、DIP |
17 | 中介者模式 | Mediator Pattern | SRP、OCP、LSP、ISP、DIP |
18 | 备忘录模式 | Memento Pattern | SRP、OCP、LSP、ISP、DIP |
19 | 观察者模式 | Observer Pattern | SRP、OCP、LSP、ISP、DIP |
20 | 状态模式 | State Pattern | SRP、OCP、LSP、ISP、DIP |
21 | 策略模式 | Strategy Pattern | SRP、OCP、LSP、ISP、DIP |
22 | 模板方法模式 | Template Method Pattern | SRP、OCP、LSP、ISP、DIP |
23 | 访问者模式 | Visitor Pattern | SRP、OCP、LSP、ISP、DIP |
面向对象设计原则(OOD Principle)
面向对象设计原则(OODP)Object-Oriented Design Principle
- 面向对象设计原则是一组指导性准则,用于帮助软件开发人员设计和构建高质量、灵活、可维护和可扩展的面向对象软件系统。
- 这些原则强调了良好的面向对象设计实践,有助于避免常见的设计问题并提高软件系统的可靠性和可重用性。
1. 单一职责原则(SRP)
单一职责原则(SRP)Single Responsibility Principle
- 每个类或模块应该有且只有一个单一的责任。
- 换句话说,一个类应该只负责完成一个明确定义的功能。
- 这样做可以降低类的复杂性,提高类的可维护性和可重用性。
2. 开闭原则(OCP)
开闭原则(OCP)Open/Closed Principle
- 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。
- 这意味着当需要添加新功能时,应该通过扩展现有代码来实现,而不是修改现有代码。
- 这样可以保持现有功能的稳定性,并降低引入新功能时引入错误的风险。
3. 里氏替换原则(LSP)
里氏替换原则(LSP)Liskov Substitution Principle
- 子类应该能够替换其父类并出现在任何使用父类的地方,而不会影响程序的正确性。
- 这就要求子类必须保持父类的行为,即子类不能修改父类的行为。
4. 接口隔离原则(ISP)
接口隔离原则(ISP) Interface Segregation Principle
- 不应该强迫客户端依赖于它们不使用的接口。
- 接口应该被细化,只包含客户端需要的方法,这样可以降低类之间的耦合度,提高系统的灵活性和可维护性。
5. 依赖倒置原则(DIP)
依赖倒置原则(DIP)Dependency Inversion Principle
- 高层模块不应该依赖于低层模块,而是应该依赖于抽象。
- 抽象不应该依赖于具体实现,而是具体实现应该依赖于抽象。
- 这样可以降低模块之间的耦合度,提高代码的可测试性和可扩展性。
6. 迪米特法则(LoD)
迪米特法则(LoD)Law of Demeter
- 也称为最少知识原则。
- 一个对象应该对其他对象有尽可能少的了解,只与直接的朋友进行交互。
- 这样可以降低类之间的耦合度,使系统更加灵活和易于维护。
7. 合成复用原则(CRP)
合成复用原则(CRP)Composite Reuse Principle
- 尽量使用组合/聚合的方式而不是继承关系达到软件复用的目的,是 has-a 关系,而不是通过继承。
- 该原则促使开发者在设计中更多地考虑对象之间的组合关系,以达到模块化、灵活性和可维护性的目标。
这些面向对象设计原则是设计模式的基础,它们指导着我们如何设计出更加健壮、灵活和可维护的面向对象软件系统。
遵循这些原则有助于提高代码的质量,减少重构的需求,并帮助我们构建出更好的软件。
创建型模式 (Creational Patterns)
工厂方法模式(Factory Method Pattern)
工厂方法模式(Factory Method Pattern)
抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)
单例模式(Singleton Pattern)
单例模式(Singleton Pattern)
原型模式(Prototype Pattern)
原型模式(Prototype Pattern)
建造者模式(Builder Pattern)
建造者模式(Builder Pattern)
结构型模式 (Structural Patterns)
适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern)
桥接模式(Bridge Pattern)
桥接模式(Bridge Pattern)
组合模式(Composite Pattern)
组合模式(Composite Pattern)
装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern)
外观模式(Facade Pattern)
外观模式(Facade Pattern)
享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
代理模式(Proxy Pattern)
行为型模式 (Behavioral Patterns)
责任链模式(Chain of Responsibility Pattern)
责任链模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
解释器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)
备忘录模式(Memento Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
观察者模式(Observer Pattern)
状态模式(State Pattern)
状态模式(State Pattern)
策略模式(Strategy Pattern)
策略模式(Strategy Pattern)
模板方法模式(Template Method Pattern)
模板方法模式(Template Method Pattern)
访问者模式(Visitor Pattern)
访问者模式(Visitor Pattern)
玄子Share 设计模式(GOF 三分类全23种)8.1