Template Method 模式

不要将设计模式想的高不可攀,好像高手才会使用的东西,事实上如果您在下手写程序之前,能稍稍对程序做个分析规划,或多或少都会用到一些模式了,模式不是教条,它只是前人的经验成果,而Gof的书则是选前人之精华持续改进而来罢了。

Template Method模式就是一个很简单的模式,但可能是使用最广泛的模式,也许您也一直使用这样的模式,看它的UML类结构图就知道了。

在此输入图片描述

仅仅是抽象类与具体类的关系而已,有些人常问抽象类与接口有啥区别,Template Method模式可以提供其中一个答案例如:

AbstractClass.java

public abstract class AbstractClass
{
    public void templateMethod()
    {
        opStep1();
        opStep2();
        opStep3();
    }

    public abstract void opStep1();
    public abstract void opStep2();
    public abstract void opStep3();
}

ConcreteClass.java

public class ConcreteClass extends AbstractClass
{
    public void opStep1()
    {

    }

   public void opStep2()
   {

   }

   public void opStep3()
   {

   }
}

对于一些程序而言,我们希望规定一些处理步骤,流程或骨架,就像上面例种的step1到step2一样,至于流程中的step1到step3如何实例化并不做规定,而留给具体子类实现,这就是Template Method模式的目的。

抽象类和接口的差别之一也正在于抽象类可以先实现其中的一些方法,而接口则完全规定接口。

你可能感兴趣的:(模式,template,method)