定义:
定义一个模板结构,将一些具体操作延迟到子类实现。
通过模板方法,子类可以重新定义算法的某些步骤而不必改变算法结构,同时增加了代码复用。
两个角色:
抽象模板:定义模板之间公共部分。将不同的实现函数抽象出来。
具体模板:定义每个模板之间不同的算法逻辑。
例:写作业。
// 抽象模板类
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:
准备笔!
准备纸!
开始写数学作业!
-----------------------
准备笔!
准备纸!
开始写英语作业!
网友评论