23中设计模式包括哪些

传送门(转载):https://www.cnblogs.com/Leo_wl/p/6067267.html html

附(github设计模式):https://github.com/iluwatar/java-design-patternsjava

(方便之后本身之后查阅,就直接拷过来了)git

根据设计模式的参考书 中所提到的,总共有 23 种设计模式。这些模式能够分为三大类:建立型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)github

建立型模式

这些设计模式提供了一种在建立对象的同时隐藏建立逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例须要建立哪些对象时更加灵活。算法

  • 工厂模式(Factory Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 单例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)

工厂模式:定义一个建立对象的接口,让其子类本身决定实例化哪个工厂类,工厂模式使其建立过程延迟到子类进行。设计模式

抽象工厂模式:提供一个建立一系列相关或相互依赖对象的接口,而无需指定它们具体的类。数据结构

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。ui

建造者模式:将一个复杂的构建与其表示相分离,使得一样的构建过程能够建立不一样的表示。spa

原型模式:用原型实例指定建立对象的种类,而且经过拷贝这些原型建立新的对象。设计

结构型模式

这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象得到新功能的方式。

  • 适配器模式(Adapter Pattern)
  • 桥接模式(Bridge Pattern)
  • 过滤器模式(Filter、Criteria Pattern)
  • 组合模式(Composite Pattern)
  • 装饰器模式(Decorator Pattern)
  • 外观模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)

适配器模式:将一个类的接口转换成客户但愿的另一个接口。适配器模式使得本来因为接口不兼容而不能一块儿工做的那些类能够一块儿工做。

桥接模式:将抽象部分与实现部分分离,使它们均可以独立的变化。

过滤器模式:这种模式容许开发人员使用不一样的标准来过滤一组对象,经过逻辑运算以解耦的方式把它们链接起来

组合模式:将对象组合成树形结构以表示"部分-总体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具备一致性。

装饰器模式:动态地给一个对象添加一些额外的职责。就增长功能来讲,装饰器模式相比生成子类更为灵活。

外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

享元模式:运用共享技术有效地支持大量细粒度的对象。

代理模式:为其余对象提供一种代理以控制对这个对象的访问。

行为型模式

这些设计模式特别关注对象之间的通讯。

  • 责任链模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 观察者模式(Observer Pattern)
  • 状态模式(State Pattern)
  • 空对象模式(Null Object Pattern)
  • 策略模式(Strategy Pattern)
  • 模板模式(Template Pattern)
  • 访问者模式(Visitor Pattern)

责任链模式:避免请求发送者与接收者耦合在一块儿,让多个对象都有可能接收请求,将这些对象链接成一条链,而且沿着这条链传递请求,直到有对象处理它为止。

命令模式:将一个请求封装成一个对象,从而使您能够用不一样的请求对客户进行参数化。

解释器模式:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。

迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。

中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不须要显式地相互引用,从而使其耦合松散,并且能够独立地改变它们之间的交互。

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象以外保存这个状态。

状态模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,全部依赖于它的对象都获得通知并被自动更新。

空对象模式:在空对象模式中,咱们建立一个指定各类要执行的操做的抽象类和扩展该类的实体类,还建立一个未对该类作任何实现的空对象类,该空对象类将无缝地使用在须要检查空值的地方。

策略模式:定义一系列的算法,把它们一个个封装起来, 而且使它们可相互替换。

模板模式:定义一个操做中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类能够不改变一个算法的结构便可重定义该算法的某些特定步骤。

访问者模式:主要将数据结构与数据操做分离。

相关文章
相关标签/搜索