程序设计模式(Design Patterns)是软件开发中总结和提炼出来的、被反复使用的、经过验证的代码设计经验。它们为常见的软件设计问题提供了通用的解决方案。设计模式并不是具体的代码实现,而是一种可复用的设计思想和模板。常见的设计模式主要分为三大类:
一、创建型模式(Creational Patterns)
主要关注对象的创建方式,目的是将对象的创建与使用分离。常见的有:
- **单例模式(Singleton)**
保证一个类只有一个实例,并提供全局访问点。
- **工厂方法模式(Factory Method)**
定义一个用于创建对象的接口,让子类决定实例化哪一个类。
- **抽象工厂模式(Abstract Factory)**
提供一个创建一系列相关或相互依赖对象的接口。
- **建造者模式(Builder)**
将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。
- **原型模式(Prototype)**
通过复制现有的实例来创建新的实例,而不是通过 new 操作。
二、结构型模式(Structural Patterns)
关注类和对象的组合,解决更大的结构问题。常见的有:
- **适配器模式(Adapter)**
将一个类的接口转换成客户希望的另一个接口,实现类之间的兼容。
- **桥接模式(Bridge)**
将抽象部分与实现部分分离,使它们可以独立变化。
- **组合模式(Composite)**
将对象组合成树形结构以表示"部分-整体"的层次结构。
- **装饰器模式(Decorator)**
动态地给一个对象添加一些额外的职责。
- **外观模式(Facade)**
为子系统中的一组接口提供一个统一的高层接口。
- **享元模式(Flyweight)**
运用共享技术有效地支持大量细粒度的对象。
- **代理模式(Proxy)**
为其他对象提供一种代理以控制对这个对象的访问。
三、行为型模式(Behavioral Patterns)
关注对象之间的通信和职责分配。常见的有:
- **责任链模式(Chain of Responsibility)**
使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合。
- **命令模式(Command)**
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。
- **解释器模式(Interpreter)**
给定一种语言,定义它的文法的一种表示,并定义一个解释器。
- **迭代器模式(Iterator)**
提供一种方法顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示。
- **中介者模式(Mediator)**
用一个中介对象来封装一系列的对象交互。
- **备忘录模式(Memento)**
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
- **观察者模式(Observer)**
当一个对象状态发生变化时,依赖它的所有对象都会得到通知并自动更新。
- **状态模式(State)**
允许一个对象在其内部状态改变时改变它的行为。
- **策略模式(Strategy)**
定义一系列的算法,把它们一个个封装起来,并且使它们可以互换。
- **模板方法模式(Template Method)**
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
- **访问者模式(Visitor)**
封装一些作用于某种数据结构中的各元素的操作。
设计模式的好处在于:
-
提高代码的可复用性和可维护性
-
降低耦合度
-
使代码更易于理解和扩展