设计模式(Design pattern)简介
设计模式是一种在软件开发中常用的方法论,它提供了一些经验丰富的解决方案,帮助解决常见的设计问题。设计模式可以提高代码的可维护性、可扩展性和可重用性,同时降低了代码的复杂性。
设计模式主要是基于以下原则:
- 对接口编程而不是对实现编程。
- 优先使用对象组合而不是继承。
1.创建型模式
创建型模式是设计模式中的一类,它关注的是对象的创建过程,以确保创建对象的方式是灵活、可扩展和可管理的。这些模式通常用于封装对象的创建细节,以降低系统的耦合度,同时提供更好的对象创建和初始化方式。
- 单例模式(Singleton Pattern)
- 工厂方法模式(Factory Method Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 建造者模式(Builder Pattern)
- 原型模式(Prototype Pattern)
2.结构型模式
结构型模式是设计模式中的一种,它关注的是如何将类和对象组合成更大的结构,以满足系统的需求。这些模式通常用于处理对象之间的组合、继承和关联关系,以实现更灵活、可复用和可扩展的代码结构。
- 适配器模式(Adapter Pattern)
- 装饰者模式(Decorator Pattern)
- 代理模式(Proxy Pattern)
- 组合模式(Composite Pattern)
- 桥接模式(Bridge Pattern)
- 享元模式(Flyweight Pattern)
3.行为型模式
行为型模式是设计模式中的一种,它关注的是对象之间的通信和协作方式,以及对象如何分配职责和责任。这些模式通常用于处理对象之间的交互,以实现更灵活、可扩展和可维护的代码。
- 观察者模式(Observer Pattern)
- 策略模式(Strategy Pattern)
- 命令模式(Command Pattern)
- 状态模式(State Pattern)
- 责任链模式(Chain of Responsibility Pattern)
- 模板方法模式(Template Method Pattern)
- 访问者模式(Visitor Pattern)
- 中介者模式(Mediator Pattern)
- 备忘录模式(Memento Pattern)
- 解释器模式(Interpreter Pattern)
- 空对象模式(Null Object Pattern)
- 策略模式(Strategy Pattern)
六大原则概述如下:
单一职责原则(Single Responsibility Principle - SRP)
这个原则强调一个类应该只有一个原因去改变。换句话说,一个类应该只有一个职责。这有助于确保类的代码清晰、简单,并且容易维护。如果一个类负责太多不同的事情,那么它会变得复杂难以理解,而且修改一个职责可能会影响其他职责。
接口隔离原则(Interface Segregation Principle - ISP)
这个原则建议将接口分离成更小、更专注的接口,而不是创建一个庞大的通用接口。这样可以确保每个类只需要实现与其相关的接口,而不需要实现不需要的方法。这有助于降低类之间的依赖性。
依赖倒置原则(Dependency Inversion Principle - DIP)
这个原则强调高层次模块不应该依赖于低层次模块,而两者都应该依赖于抽象。此外,抽象不应该依赖于细节,而细节应该依赖于抽象。这有助于减少模块之间的耦合,并使代码更易于扩展和维护。
里氏替换原则(Liskov Substitution Principle - LSP)
这个原则指出,子类应该能够替代其父类,而不会引起意外的行为变化。这意味着在子类中不能改变父类的预期行为,否则会违反这个原则。遵守 LSP 有助于确保类的继承关系正确、稳定,同时增强了代码的可靠性。
开闭原则(Open-Closed Principle - OCP)
这个原则要求软件实体(例如类、模块、函数等)应该对扩展开放,但对修改关闭。这意味着应该通过添加新代码来扩展系统的功能,而不是修改已有的代码。这有助于避免破坏现有功能,同时提高代码的可维护性和可扩展性。
迪米特法则(Law of Demeter,又称最少知识原则)
这个原则强调一个对象应该只与其直接的朋友进行通信,而不是与陌生的对象进行通信。这有助于降低对象之间的耦合度,提高系统的灵活性和可维护性。
遵循这些 原则有助于设计出更清晰、更可维护、更可扩展的软件架构,并降低了代码的复杂性和错误发生的概率。这些原则是面向对象编程的基石,可以提高软件开发的质量和效率。