模板方法模式(行为型)

2018-09-06  本文已影响15人  游牧族人

定义:
定义一个模板结构,将一些具体操作延迟到子类实现。
通过模板方法,子类可以重新定义算法的某些步骤而不必改变算法结构,同时增加了代码复用。
两个角色:
抽象模板:定义模板之间公共部分。将不同的实现函数抽象出来。
具体模板:定义每个模板之间不同的算法逻辑。
例:写作业。

// 抽象模板类
public abstract class DoHomeWork
{
    public void doHomeWord(){
        preparePen();
        preparePaper();
        work();
    }
    
    public void preparePen(){
        System.out.println("准备笔!");
    }
    
    public void preparePaper(){
        System.out.println("准备纸!");
    }
    // 抽象写作业方法,留给子类实现。
    public abstract void work();
}
-------------------------------------------------------------------------------------
// 具体模板类
public class DoMath extends DoHomeWork
{
    @Override
    // 重写work方法。
    public void work()
    {
        System.out.println("开始写数学作业!");
    }
}
public class DoEnglish extends DoHomeWork
{
    @Override
    // 重写work方法。
    public void work()
    {
        System.out.println("开始写英语作业!");
    }
}
// 客户端
public class Client
{
    public static void main(String[] args){
        DoHomeWork mathWork = new DoMath();
        mathWork.doHomeWord();
        System.out.println("-----------------------");
        DoHomeWork englishWork = new DoEnglish();
        englishWork.doHomeWord();
    }
}
Output:
准备笔!
准备纸!
开始写数学作业!
-----------------------
准备笔!
准备纸!
开始写英语作业!
上一篇下一篇

猜你喜欢

热点阅读