设计模式总共23个,可是经常使用的不到10个,下面就把这23个设计模式进行整理归类,具体以下:设计模式
1)建立型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。spa
2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。设计
3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、职责链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式代理
1)备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象以外保存这个状态。这样之后就能够将该对象恢复到原先保存的状态。对象
备忘录模式能够避免暴露一些只应由对象A管理却又必须存储在对象A以外的信息。备忘录模式把可能很复杂的对象A的内部信息对其余对象屏蔽起来,从而保持了封装边界。原型
2)状态模式:当一个对象的内在状态改变时容许改变其行为,这个对象看起来像是改变了其类。it
状态模式提供了一个更好的办法来组织与特定状态相关的代码,决定状态转移的逻辑不在的单块的if或switch当中,而是分布在各个状态子类之中,因为全部与状态相关的代码都存在于某个状态子类中,因此经过定义新的子类能够很容易地增长新的状态和转换。模板
3)访问者模式:表示一个做用于某对象结构中的各元素的操做。它使你能够在不改变各元素类的前提下定义做用于这些元素的新操做。迭代器
访问这种增长具体的Element是困难的,但增长依赖于赋值对象结构的构件操做就变得容易。仅须要增长一个新的访问者便可在一个对象结构上定义一个新的操做。若是你还记得那个男人和女人的状态,大家你就会知道Element就是男人和女人,那么这种结构一旦肯定是很难更改的,可是你却能够新增访问者,好比结婚、生子等新的操做。引用
4)中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不须要显示地相互引用,从而使其耦合松散,并且能够独立地改变他们之间的交互。
将集体行为封装一个单独的中介者对象来避免大量对象相互链接的问题,中介者负责控制和协调一组对象间的交互。中介者充当一个中介以时组中对象再也不相互显示引用。这些对象仅仅知道中介者,从而减小相互链接是数目。实际上是迪米特原则(最少知识原则)的充分体现。
5)解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
若是一个特定类型的问题发生频率足够高,那么就能够考虑将该问题的各个实例表述为一个简单语言中的句子,也就是说经过构建一个解释器,该解释器解释这些句子来解决该问题。