23种设计模式
23种设计模式是《设计模式:可复用面向对象软件的基础》一书中总结的经典设计模式,按其用途和结构大致分为三类:创建型、结构型、行为型。下面是每种模式的简介:
创建型(Creational Patterns)
单例模式 (Singleton)
保证一个类只有一个实例,并提供全局访问点。工厂方法模式 (Factory Method)
定义一个创建对象的接口,但由子类决定要实例化哪个类。抽象工厂模式 (Abstract Factory)
提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体类。建造者模式 (Builder)
使用多个简单的对象一步步构建一个复杂的对象。原型模式 (Prototype)
通过复制现有的实例来创建新的对象,而不是通过构造函数实例化。
结构型(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)
表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素类的前提下,定义作用于这些元素的新操作。
设计模式的学习思路
- 名称
- 问题场景
- 解决方案
- 成效

