设计模式分为三大类:
- 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
- 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
- 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
23种常用设计模式:
- 工厂模式(Factory Pattern):在工厂模式中,客户类与工厂来是分开的,消费者任何时候需要产品只需要向工厂请求就好,消费者无需修改就可以接纳新产品。缺点是:当前产品修改是工厂也需要修改。
- 建造模式(Builder Pattern):将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同表象的产品,建造模式使得产品内部表象可以独立的变化,客户不必知道产品的内部细节。建造模式可以强制实行一种分步骤的建造过程。
- 工厂方法模式(Abstract Factory Pattern):在工厂方法模式中,核心工厂类不再负责所有的产品的创建,而是将具体创建工作交给子类处理,成为一个抽象角色,仅负责给出具体工厂必须实现的接口,而不接触某款产品的实例化细节。
- 原型模型模式(Prototype Pattern):原型模型是通过给定一个原型对象来指明要创建的的对象类型,可以用复制这个对象的方法创建更多的对象,原型模型允许动态的增加或减少产品类。缺点是:每一个类必须配备一个克隆方法。
- 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。
- 适配器模式(Adapter Pattern):把我一个类的接口变化成客户端期望的另一个接口。
- 桥接模式(Bridge Pattern):将抽象化和实现化脱耦,使得二者可以独立变化,也就是说,将他们的强关联变成弱关联,即软件系统使用的是组合/聚合关系而不是继承关系,从而使两者可以独立变化。
- 合成模式(Composite Pattern):将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
- 装饰者模式(Decorator Pattern):装饰者模式以客户端透明的方式扩展对象的功能,是继承方案的一个替代方案,提供了比继承更多的灵活性,动态的的给一个对象添加功能,这些功能又可以动态的撤销。可增加又一些基本功能排列组合产生非常强大的功能。
- 门面模式(Facade Pattern):外部与一个子系统通信必须通过一个门面对象进行,门面模式提供一个高层次的接口,使得子系统更容易使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,单整个系统可以有多个门面类。
- 享元模式(Flyweight Pattern):使用共享对象可有效地支持大量的细粒度对象。
- 代理模式(Proxy pattern):给某一个对象创建一个代理对象,并由代理对象控制源对象的应用。
- 责任链模式(chain of responsinbleity Pattern):使多个对象有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系 。将这些对象连成一个链,并沿着这条链传递请求,知道有对象处理它为止
- 命令模式(cmd Pattern):将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
- 解释器模式(Interpreter Pattern):给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
- 迭代子模式(Iterator Pattern):它提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节。
- 调停者模式(mediator Pattern ):调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。
- 备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原来保存的状态。
- 观察者模式(Observer Pattern):定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新
- 状态模式(state Pattern ):当一个对象在状态改变时允许其改变行为,这个对象看起来像改变了其类。
- 策略模式(Strategy Pattern):定义一组算法,将每个算法都封装起来,并且使他们之间可以互换
- 模板方法模式(Template Method Pattern):
- 访问者模式(Visitor Pattern):封装一些作用于某种数据结构中的各种元素,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作
原文:https://blog.****.net/forwujinwei/article/details/79050044