在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。在GOF95中模板方法被归类为行为模式。
提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统的使用变得更加容易(满足大部分需要),同时不限制对子系统更加精确的控制。GOF95把外观模式分类为结构型模式。
适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以无缝协作。在GOF95中,适配器被分类为结构型模式。适配器和装饰器具有共同的别名:Wrapper。
对象适配器:使用单重继承+组合,类图如下:
类适配器:…
命令模式将“请求”封装为命令对象,不同的请求或者请求的列表可用来参数化其它对象,可以支持命令的撤销、重做的功能,命令可以包装多个其它命令,形成宏命令,该模式在GOF95中分类为行为模式。
装饰模式动态的将责任附加到对象上。就增加功能来说,装饰模式比生成子类更为灵活。装饰模式在GOF95中分类为结构模式。
观察者模式,也叫订阅/发布(Publish/Subscribe)模式、源/监听器(Source/Listener)模式。该模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。观察者模式在GOF95中分类为行为…
单例模式确保一个类只有一个实例,并提供一个全局访问点。单例模式的本质是控制实例的数目,因此也就有人引申出多例模式(Multiton)。
软件系统中的某些对象要求只能有一个,例如线程池、缓存、对话框、设备驱动程序对象,如果出现多个实例,可能…
策略模式将算法独立成一个类层次,允许它们之间可以相互替换,这些替换甚至可以发生在运行时。该模式让算法的变化独立于使用算法的客户。
策略模式在GOF95中分类为行为模式。
工厂模式是一个设计模式族,在GOF95中分类为创建型模式:
在满足非功能需求的前提下,尽量保持设计的简单。简单的设计有利于其它开发人员理解。
类应该对扩展开放,对修改关闭。
为了遵循开闭原则,通常需要引入新的抽象层次,从而增加代码的复杂度。因此…