设计模式分为三大类:创建型、结构型、行为型。

  其中创建型有:抽象工厂模式、原型模式、单例模式、建造者模式、工厂方法模式。

    结构型模式有:组合模式、享元模式、适配器模式、桥接模式、装饰模式、外观模式、代理模式。

    行为型模式有:模板方法模式、迭代器模式、中介者模式、解释器模式、备忘录模式、观察者模式、职责链模式、命令模式、策略模式、访问者模式。

 

  1、工厂方法模式:将工厂和产品都抽象出来,不同具体的实类继承抽象类,通过工厂子类决定实例化哪种产品,一个工厂只生产一种产品,以后想生产别的产品再建一个单独的工厂类继承抽象类,不必修改原有代码,符合开闭原则。

  2、抽象工厂模式:可以实例化多个产品的工厂方法模式。

  3、建造者模式:它与工厂类有着对比,工厂类模式提供的是单个类的模式,而建造者模式是多个产品集中管理,各个组合,来创建复合对象,其拥有不同的属性。

  4、原型模式:就是克隆自己,实现的方式,提供一个抽象父类,父类中提供一个克隆方法,子类继承父类,并实现父类中的克隆方法。在使用过程中,直接调用子类中的克隆方法,就能返回一个具体的子类对象。

  5、单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点。对于一些需要频繁创建和销毁的对象单例模式是可以提高系统的性能,但是滥用单例将带来一些负面问题。

  6、适配器模式:该模式主要就是提供一种转换的方式,将一个接口转换成另一个接口,使得原本不兼容的能一起工作。比如让猫学狗叫。

  7、 桥接模式:就是把抽象化和实现化进行分离,成为独立模块,让两者能够独自变化。用关联关系替代继承关系。

  8、 组合模式:将多个对象组合在一起,然后用树形结构来表示整体与部分的关系。一般用于处理树形结构的问题。

  9、装饰模式:为一个类增加功能。两个类A与B是同一个类M的子类,然后一个抽象子类A又将另一个子类B作为自己的成员变量,然后通过该抽象类的子类实现对类功能的添加。

  10、外观模式:做一个门面,然后外界与系统的交互都通过这个门面进行的实现。

  11、享元模式:实现对象的共享,当系统中对象很多的时候,可用此方法减少内存的开销

  12、代理模式:两个类之间不直接交互,而是通过代理的交互。

  13、职责链模式:每个类都有他的上级类,处理完自己的工作后发给上级,连成一条链。

  14、命令模式:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种紧耦合。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这里就利用到了命令模式。都只做好自己的事,不需要管这其中是怎么实现的。

  15、解释器模式:用来定义语言的文法,创建各种各样的解释器,解释语言中的句子。如正则表达式的解释等。

  16、迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示迭代器的好处是它是一个接口,这样你只用用接口约定的方法调用就可以迭代,如果考虑以后可能改变类型用迭代器会灵活点,这对系统的维护和升级具有较高的性能可以提高二次开发的效率。

  17、中介者模式:对象与对象之间的交互不直接进行,而是通过中介者来实现交互。中介者将对象之间的交互抽取出来,大大减少对象间的关系数量。

  18、备忘录模式:在不破坏封装的前提下,将一个对象完整地保存在另一个对象中,并在需要还原的时候能够恢复到原先的状态。比如一个普通的类有各种各种属性,备忘录类就用来储存这个普通类的属性值,也有一个类用于储存备忘录类。

  19、观察者模式:多个对象依赖于一个目标对象,当该目标对象发生改变时,多个对象也会随之发生改变。比如鸟看到我一动就会飞走,鸟看到我的状态发生变化的信号就会做出飞走的动作。

  20、状态模式:当对象的状态改变后,对象的行为也随之改变,就像改变了类一样。在类的定义中添加一个状态,对应不同的状态,类中的方法有不同的响应。

  21、策略模式:定义一系列算法,然后将每一个算法进行封装,系统提供不同算法的实现,新增或者删除算法,但是使用决定权在于用户,外部用户来决定用哪个算法。

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

  23、访问者模式:分离对象数据结构和行为的方法,通过此分离,可以为一个被访问者动态添加新的操作而无需做其他修改的效果。