美文网首页程序员Java设计模式
设计模式-模板方法模式

设计模式-模板方法模式

作者: breezedancer | 来源:发表于2016-11-06 18:57 被阅读472次

抽象类把部分业务逻辑用具体方法具体实现,或者构造方法里面实现,而把其他需要子类来完成的方法设置为抽象方法,迫使子类务必实现。每种子类都可以以不同的方式进行具体实现,这就是模板方法模式。

先来看下 UML 的类图,比较简单

这里的抽象类就是抽象模板类,定义一个或者多个抽象方法,迫使子类来完成。同时定义一个模板方法,该方法一般情况下是一个具体方法,给出模板方法的执行过程,里面调用抽象方法。

具体的实现子类是把抽象类里面务必要实现的方法进行具体实现,成为父级模板方法里面的组成部分。

看下具体代码:
首先是抽象模板类

public abstract class AbstractTemplate {

    //模板方法
    public void templete(){
        first();
        second();
        third();
    }
    
    //下面三个抽象方法需要子类来具体实现
    public abstract void first();
    
    public abstract void second();
    
    public abstract void third();
    
}

接下来看具体实现,这个具体类是把大象装进冰箱的步骤

public class ConcreteTemplete extends AbstractTemplate{

    @Override
    public void first() {
        System.out.println("第一步开启冰箱");
    }

    @Override
    public void second() {
        System.out.println("第二步把大象塞进去");
    }

    @Override
    public void third() {
        System.out.println("第三步关闭冰箱");
    }

}

测试下

public class Client {
    public static void main(String[] args) {
        AbstractTemplate template=new ConcreteTemplete();
        template.templete();
    }
}

几点经验:
1、模板方法模式把复用代码集中到父类,子类可以直接调用;
2、抽象的父类可以级联,进行有效的复用部分代码;
3、一般和生命周期(生命周期一般会有几个阶段)有关的东西可以考虑该模式

相关文章

网友评论

    本文标题:设计模式-模板方法模式

    本文链接:https://www.haomeiwen.com/subject/warnuttx.html