模板方法
概念层次
是某个抽象对象,具有不同的具体对象,需要完成一件事情
(1)有相同的步骤,但单个步骤的实现可能不同
(2)所以完成一件事情这个行为,控制步骤顺序
(3)单个步骤行为可以抽象,让具体对象去实现
父类定义一个方法,这个方法里面调用一些抽象方法,这些抽象方法在子类去实现
父类调用抽象方法的方法,就是模板方法
策略模式
概念层次
有一些实体对象,有一个行为,可能有不同的实现
(1)那么,把这个行为隔离抽象出来,让具体行为通过组合的方式,与实体对象关联
(2)这个行为的具体实现就是策略
策略模式,模板方法,区别
(1)模板方法,是,一件事情,可能需要顺序执行几个方法,这几个方法,一些可能在抽象类已经实现,只需要在具体对象实现另一些方法就可以。
抽象类给做这件事情提供了一个模板,具体类按照模板实现就可以了。
(2)策略模式是抽象隔离一个行为,通过组合与实体对象关联。
(3)模板方法,对象之间,某个行为表现为较强的模板性质。
装饰模式
比如计算奖金,比如促销
概念层次
就是指对象的行为,多样,且,多变,且,可以任意组合。
抽象这个行为到接口。抽象装饰器对象,实现接口,且,关联接口。转发装饰对象行为,为关联接口行为。
多样,易变,任意组合,就是靠具体对象去按粒度,按概念实现。
装饰器模式,策略模式,区别
(1)装饰器是对象需要动态改变行为的实现。
(2)策略是指定行为的一种实现。
(3)比如使用a策略,就不能使用b策略,要同时包含a,b策略,就需要重新写个c策略。
(4)装饰器就是,可以先用a装饰,再用b装饰,那就轻松实现同时包含a,b的行为。
(5)所以,看上去,选择之间是互相排斥的就应该使用策略模式。
(6)选择之间是可以组合的,就应该使用装饰器模式。
装饰模式,生成子类,区别
(1)生成子类,会继承父类全部的状态行为特点。
(2)装饰模式,可以就具体功能行为状态,进行扩展,并且最重要的,这些功能行为状态,从概念层次来看,可以任意组合,和生活中的装饰就是一个意思。
网友评论