设计模式之模板方法(Template Method)

模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

模板方法模式UML图:


为了防止模板方法被覆盖,通常将模板方法定义为final方法。

对模板方法进行挂钩(钩子方法)

钩子是一种被声明在父类中的方法,通常在模板方法中被调用,但父类中通常只会给出空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。如果子类需要干涉模板方法中的一些行为,可以实现或者覆盖父类中定义好的钩子方法。

模板方法模式和策略模式都能封装算法,不过一个是使用继承,一个是使用组合。

模板方法模式相对比较好理解,而且应用也比较广泛,在其他很多模式中,我们都能看到模板方法模式的身影,比如工厂方法模式就是模板方法模式的一个特殊版本。

参考资料:

Head First 设计模式 (中国电力出版社)

猜你喜欢

转载自ktian.iteye.com/blog/1308899