设计模式之略见一斑(Template Method模板方法模式)
? 模板方法模式就是预先作好一个模板,开发者只要根据模板添加相应的业务实现,这个就是架构啦。
它有如下特点:
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 {@Overridepublic void action() {// TODO Auto-generated method stubdoSomeThing();}}?
OK,模板方法模式就这么简单了.
?
小结:
??? Template Method模式目的在于一个方法中定义一个算法,并对算法的某些步骤进行抽象,这样,我们可以将这些步骤的具体实现从这个方法中提出,并在某个部方法中定义这些步骤,或者是用一个接口定义这些步骤,留待其他类来提供这些步骤的实现。
??? Template Method模式通常可以作为开发人员之间的约束。一个开发人员提供算法的框架,另一个开发人员则提供算法某些步骤的具体实现。这也许是需要算法实现的步骤,或者是算法的开发人员在算法中某一位置设置的钩子。
??? Template Method模式并不要求我们定义子类前编写模板方法。我们可能在已有的类层次结构发现相似的方法。在这种情况下,我们可以抽象出算法的架构,并把它上移到超类中,从应用模板方法模式来简化和组织代码。这种模式在日常开发中比较常用。