设计模式-template

来源:互联网 发布:淘宝2012新规则 编辑:程序博客网 时间:2024/05/29 11:23

在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template Method提供了这种情况的一个实现框架。


Template Method模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。

 

   Strategy模式解决的是和Template Method模式类似的问题,但是Strategy模式是将逻辑(算法)封装到一个类中,并采取组合(委托)的方式解决这个问题。

 

   解决这个问题可以采取两种模式来解决,一是Template模式,二是Strategy模式。本文给出的是Template Method模式。一个通用的Template Method模式的结构图为:


Demo如下:

public abstract class AbstractClass {public void templateMethod() {this.primitive1();this.primitive2();}protected abstract void primitive1();protected abstract void primitive2();}public class EntityClass1 () {public class EntityClass1() {};@overrideprotect void primitive1() {System.out.println("EntityClass1.primitive1 called");}@overrideprotect void primitive2() {System.out.println("EntityClass1.primitive2 called");}}public class EntityClass2 () {public class EntityClass2() {};@overrideprotect void primitive1() {System.out.println("EntityClass2.primitive1 called");}@overrideprotect void primitive2() {System.out.println("EntityClass2.primitive2 called");}}