代理模式:重点就是为其它对象提供了一个代理类来控制对对象的访问。该模式中有一个真实的对象,一个代理的对象,同时继承一个共用接口,客户端对于接口的访问是通过真实体还是代理并不关心。
总结代理模式:用一个第三者来对对象进行访问权限的控制。使得客户端不直接与真实体联系。
工厂方法模式:它提供了一个用于创建对象的接口,由子类决定实例化,更好的体现了开放——封闭性原则。一个抽象工厂实例出多个运算工厂,每个运算工厂去实例具体的运算类。
总结工厂方法模式:具体工厂实例具体的类,运算类依赖于抽象工厂,具体类继承运算类,并且依赖于具体的工厂。
原型模式:以一个对象为基础,创建另一个可定制的对象。定义一个原型类,同时声明一个克隆自身的接口,同时具体的原型类也可以实现自身的克隆操作。
总结原型模式:在对对象的创建过程中通过克隆的方式实现。原型类提供一个克隆接口,具体类都有克隆自身的操作。
模板方法模式:定义一个算法骨架,子类可以不改变一个算法的结构就可以定义该算法的某些特定的步骤。定义一个算法骨架称之为模板,在子类中可以具体实现该算法。
总结模板方法:在一个程序中有变化的和不变的,我们把不变的行为组合到一个单一的地方,最有利于代码的复用。通过模板一次去实现具体类的具体方法。
外观模式:外观就是提供的一个公用接口,分离客户端和具体子类,作为一个中间过程出现。
总结外观模式:完全体现迪米特法则和依赖倒转原则,利用中间一个公用接口把客户端和具体子类分离,互不影响。
建造者模式:满足于“过程”稳定的设计要求,需要将一个对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。所有的过程和细节被封装起来,在创建的时候只需要明确创建类型。继承封装起来的“过程”或者“细节”实现构建过程。
总结建造者模式:前提是“过程”稳定,把所有细节封装,然后具体的建造者实现细节产生产品。解决了不会因为人为客观原因丢掉某些细节的创建。