【设计模式】--模板方法

来源:互联网 发布:mac系统能玩的网络游戏 编辑:程序博客网 时间:2024/05/22 00:25


模板方法

  在一个方法中定义一个算法的骨架,而将具体的实现延迟到子类。模板方法使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。下图中AbstractClass就是我们定义的抽象的算法骨架,ConcreteClass就是对算法具体的实现。




AbstractClass

/** * @ClassName:AbstractClass * @Description:TODO * @author wm * @date 2016年1月16日下午8:08:50 */public abstract class AbstractClass {public static final String METHOD_1="m1";public static final String METHOD_2="m2";public void templateMethod( String methodName){if(METHOD_1.equals(methodName)){doOperation1(methodName);}if(METHOD_2.equals(methodName)){doOperation2(methodName);}}protected abstract void doOperation1(String methodName);   protected abstract void doOperation2(String methodName);}

ConcreteClass

/** * @ClassName:ConcreteClass * @Description:TODO * @author wm * @date 2016年1月18日下午3:03:11 */public class ConcreteClass extends AbstractClass {@Overrideprotected void doOperation1(String methodName) {System.out.println("ConcreteClass-->>doOperation1()" + methodName);}@Overrideprotected void doOperation2(String methodName) {System.out.println("ConcreteClass-->>doOperation2()" + methodName);}}

测试类

/** * @ClassName:Test * @Description:TODO * @author wm * @date 2016年1月18日下午3:04:40 */public class Test {public static void main(String[] args){AbstractClass a=new ConcreteClass();//a.templateMethod(AbstractClass.METHOD_1);a.templateMethod(AbstractClass.METHOD_2);}}

templateMethod传入参数METHOD_1就调用doOperation1方法,2类似。类比Servlet,AbstractClass类似于Servlet中的doGet,doPost方法,具体的实现由子类完成。




-------------------------------------------wm 点点滴滴的积累----------------------------------------------------



0 0