模板方法模式

来源:互联网 发布:mac桌面文件夹隐藏 编辑:程序博客网 时间:2024/06/15 18:19

定义

定义一个操作中算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

通用类图

image

通用代码

抽象类

package template.common;/** * Created by xugebing on 2017/3/15. */public abstract class AbstractClass {    //基本方法    protected abstract void doSomething();    //基本方法    protected abstract void doAnything();    //模板方法    public void templateMethod(){        //调用基本方法,完成相关逻辑        this.doAnything();        this.doSomething();    }}

实现类1

package template.common;/** * Created by xugebing on 2017/3/15. */public class ConcreteClass1 extends AbstractClass{    //实现基本方法    @Override    protected void doSomething() {        //业务逻辑处理    }    @Override    protected void doAnything() {        //业务逻辑处理    }}

实现类2

package template.common;/** * Created by xugebing on 2017/3/15. */public class ConcreteClass2 extends AbstractClass{    //实现基本方法    @Override    protected void doSomething() {        //业务逻辑处理    }    @Override    protected void doAnything() {        //业务逻辑处理    }}

归纳

AbstractClass叫做抽象模板,它的方法分为两类:

  • 基本方法

是由子类实现的方法,并且在模板方法中被调用

  • 模板方法

可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度,完成固定的逻辑。

原创粉丝点击