1,简单工厂模式:
核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同的类函数得到不同的结果。
优点,适用于不同情况创建不同的类时;缺点,客户端必须要知道基类和工厂类,耦合性差
2,策略模式:
定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影。响到用户。
优点,适合类中的成员以方法为主,算法经常变动;简化了单元测试;缺点。
注一,策略模式经常和简单工厂模式混合使用。
3,单一职责原则:
就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多了,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
4,开放与封闭原则:
软件实体是可以扩展,但是不可修改。即对于扩展是开放的,对于修改是封闭的。面对需求,对程序的改动是通过增加代码完成的,而不是修改现有代码。开放/封闭原则是面向对象的核心所在。但是注意点,拒绝对任何部分都刻意抽象及不成熟的抽象。
5,里氏代换原则:
通俗说,在软件里面,把父类替换成子类,程序的行为没有变化。子类型必须能够替换掉它们的父类型。
6,依赖倒转原则:
抽象不应该依赖细节,细节应该依赖抽象。即针对接口编程,不要对现实编程。高层模块都不能依赖低层模块,两者都应该依赖抽象。
7,装饰模式:
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
优点,装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象。
8,代理模式:
优点,远程代理,可以隐藏一个对象在不同地址空间的事实,虚拟代理,通过代理来存放需要很长时间实例化的对象,安全代理,用来控制真实对象的访问权限,智能引用,当调用真实对象时,代理处理另外一些事。
9,工厂方法模式:
优点,修正了简单工厂模式中不遵守开放/封闭原则。
10,原型模式:
优点,从一个对象再创建另外一个可定制的对象,而无需知道任何创建细节,并能提高创建的性能。说白了就是Copy技术,对一个对象完整的Copy出一份。
11,模板方法模式:
优点,把不变的代码部分都转移到父类中,将可变的代码留在子类中。
12,迪米特法则:
如果两个类不直接通信,那么这两个类就不应当发生直接的相互作用。如果一个类需要调用另一个类的某个方法的话,可以通过第三个类转发这个调用。在类的结构设计上,每一个类都应该尽量降低成员的访问权限。
13,外观模式:
优点,为子系统的一组接口提供一个一致的界面。
14,建造者模式(生成器模式):
优点,当创建复杂对象的算法应该独立于该对象组成部分以及它们的装配方式时适用。
15,观察者模式:
优点,定义了一种一对多的关系,让多个观察对象同时监听一个主题对象,主题对象状态发生变化时,会通知所有的观察者,使它们能够更新自己。
16,抽象工厂模式:
优点,定义了一个创建一系列相关或相互依赖的接口,而无需制定它们具体类。
17,状态模式:
优点,当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,可考虑用到状态模式。
18,适配模式:
优点,双方都不适合修改的时候,可以考虑用到适配模式。
19,备忘录模式:
优点,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存到状态。
20,组合模式:
优点,整体和部分可以被一直对待。组合模式将对象组合成树形结构以表示“部分/整体”的层次结构。组合模式使用得用户对单个对象和组合对象的使用具有一致性。
21,迭代器模式:
优点,提供一种方法顺序访问一个聚敛对象的各个元素,而又不暴露该对象的内部表示。
22,单例模式:
优点,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
23,桥接模式:
优点,将抽象部分与现实部分分离,使它们可以独立变化。
24,命令模式:
25,责任链模式
优点,使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连城一条链,并沿着这条链传递该请求,知道有一个对象处理位置。
26,中介者模式:
优点,用一个中介对象来封装一系列的对象交互,中介者使各个对象不需要现实的相互引用,从而降低耦合,而且可以独立地改变它们之间的交互。
27,享元模式
优点,运用共享技术有效地支持大量细粒度的对象。
28,解释器模式:
优点,通常当一个语言需要解释执行,并且你可以将该语言中的句子表示成为一个抽象对象的语法树时,可以使用解释器模式。
29,访问者模式:
优点,适用于数据结构稳定的系统。它把数据结构和作用于数据结构的操作分离,是的操作集合。