在面向对象程序设计中,设计模式可以分为三大类,分别为creational patterns,structual patterns,behavioral patterns。creational patterns主要包括factory method;structural patterns主要包括adapter和decorator;behavior patterns主要包括stategy method,template method,iterator method和visitor method。
factory method提供了一种创建对象的最佳方式,就是让“工厂”帮你来创建对象,client只需要调用工厂中的方法即可。
在下图中,将Factory接口通过implement了Factory接口的类DogFactory来实例化,接着实例化接口factory调用它的createAnimal方法创建dog对象。
adapter模式十分简单,就是通过增加一个接口将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。下面这个UML类图表示的很清楚,就不多说了。
decorator相对复杂一些,我想先将UML类图放在这里。
decorator的目的是为对象增加不同侧面的特性,解决方法是实现一个通用接口作为要扩展的对象,添加功能,但将主要责任委托给底层对象。说白了,就是用ConcreteDecorator来装饰ConcreteComponent,注意到Decorator和Component是组合的关系。
strategy和template模式相对简单,但是很多人分不清二者的关系。这里着重说明一下,strategy使用的是委托,而template使用的是继承+重写。下面放上UML类图让大家直观感受一下~
Strategy:
template:
iterator和visitor相信大家已经比较熟悉了,这里就不多说了。
希望大家看完之后有所收获!