模板方法模式就是预先作好一个模板,开发者只要根据模板添加相应的业务实现,这个就是架构啦。
它有如下特点:
1.这个模板一般是个抽象类,抽象出子类中部分公共的方法,从而减轻子类的负担。
2.这个模板可能会定义一些方法,子类必须实现这些方法。
比如说我们想要某个方法总是以线程方法启动,于是我们的抽象类定义如下:
public abstract class Template {
public abstract void action();
public void doAction() {
new Thread(new Runnable() {
public void run() {
action();
}
}).start();
}
}
其中action具体就由子类SubTemplate实现。
public class SubTemplate extends Template {
@Override
public void action() {
// TODO Auto-generated method stub
doSomeThing();
}
}
OK,模板方法模式就这么简单了.
小结:
Template Method模式目的在于一个方法中定义一个算法,并对算法的某些步骤进行抽象,这样,我们可以将这些步骤的具体实现从这个方法中提出,并在某个部方法中定义这些步骤,或者是用一个接口定义这些步骤,留待其他类来提供这些步骤的实现。
Template Method模式通常可以作为开发人员之间的约束。一个开发人员提供算法的框架,另一个开发人员则提供算法某些步骤的具体实现。这也许是需要算法实现的步骤,或者是算法的开发人员在算法中某一位置设置的钩子。
Template Method模式并不要求我们定义子类前编写模板方法。我们可能在已有的类层次结构发现相似的方法。在这种情况下,我们可以抽象出算法的架构,并把它上移到超类中,从应用模板方法模式来简化和组织代码。这种模式在日常开发中比较常用。