模板方法

来源:互联网 发布:做快递怎么找淘宝客户 编辑:程序博客网 时间:2024/04/29 18:21

定义

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


类图


把共用的方法放在抽象类中,用于复用。

把不确定的方法,放入到具体类中,以便让具体类可以很好的构造自己的方法。

方法都会被装入到一个TemplateMethod方法中。


对应的方法,具体的什么时间用得到,什么时间用不到,根据条件来判断。


相关代码

AbstractClass抽象类,定义抽象行为

public abstract class AbstractClass {public static final String METHOD_1 = "m1";public static final String METHOD_2 = "m2";public final 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具体类,实现父类定义的一个或多个抽象方法

public class ConcreteClass extends AbstractClass {@Overrideprotected void doOperation1(String methodName) {System.out.println("method1");}@Overrideprotected void doOperation2(String methodName) {System.out.println("method2");}}

客户端调用

public class test {public static void main(String[] args) {AbstractClass a = new ConcreteClass();//a.templateMethod(AbstractClass.METHOD_1);a.templateMethod(AbstractClass.METHOD_2);}}

模板方法是通过把不变的行为搬到父类,去除子类中的重复代码,提供很好的代码复用平台。


对比

和工厂方法

都是让具体的实现放在子类中。

工厂方法主要是生产出产品,然后去应用产品。

模板方法是在于依赖子类中的步骤中的其中几个步骤,具体的步骤已经在基类中写好了。

 

和策略模式

都是封装算法。

策略都是单独的一个类。可以随时去更改策略。

模板方法模式主要在于封装步骤,具体的实现是根据依靠各个子类。



0 0
原创粉丝点击