介绍
模版方法模式的思想是在抽象类中定义程序的主体框架,在子类中实现具体的细节,是一种行为型设计模式。
实现:模版方法模式中存在两个角色,抽象类和实现类。在抽象类中,定义了程序的主体结构或者流程,该方法可以设置成final的,这样子类中就无法重写。而对于其他的细节的方法定义,则延迟到实现类中。
使用场景:
- 比如做饭,都需要开火,架锅,放入食材这样一套的主体流程,这个可以放在抽象类中。但是开多大的火,使用哪种锅,放入什么食材,则放在子类中,因为每种菜品的的制作方法都不一样。
- 比如吃饭。都要先洗手,拿餐具,吃饭。主体流程都是统一的。但是用什么东西洗手,使用什么餐具吃饭,吃什么饭,都是存在多种情况的。
以每天的生活工作为例。主体框架就是,吃早饭,上班,吃午饭,上班,吃晚饭。具体实现的细节包含三餐吃什么,上班做什么。
实现抽象类
public abstract class Life
{
abstract void makeBreakfast();
abstract void makeLunch();
abstract void makeDinner();
abstract void MorningWork();
abstract void AfternoonWork();
public final void live()
{
makeBreakfast();
MorningWork();
makeLunch();
AfternoonWork();
makeDinner();
}
}
子类
public class Chairman extends Life
{
@Override
void makeBreakfast()
{
System.out.println("早餐:吃西餐");
}
@Override
void makeLunch()
{
System.out.println("午餐:吃日本料理");
}
@Override
void makeDinner()
{
System.out.println("晚餐:吃满汉全席");
}
@Override
void MorningWork()
{
System.out.println("上午工作:处理公司内部事务");
}
@Override
void AfternoonWork()
{
System.out.println("下午工作:处理公司外部公关");
}
}
public class Programmer extends Life
{
@Override
void makeBreakfast()
{
System.out.println("早餐:肯德基");
}
@Override
void makeLunch()
{
System.out.println("午餐:麦当劳");
}
@Override
void makeDinner()
{
System.out.println("晚餐:德克士");
}
@Override
void MorningWork()
{
System.out.println("上午工作:写程序");
}
@Override
void AfternoonWork()
{
System.out.println("下午工作:调试程序");
}
}
验证程序
public class Demo
{
public static void main(String[] args)
{
Programmer programmer = new Programmer();
programmer.live();
System.out.println("");
Chairman chairman = new Chairman();
chairman.live();
}
}
运行结果
早餐:肯德基
上午工作:写程序
午餐:麦当劳
下午工作:调试程序
晚餐:德克士早餐:吃西餐
上午工作:处理公司内部事务
午餐:吃日本料理
下午工作:处理公司外部公关
晚餐:吃满汉全席Process finished with exit code 0
总结
优点:将不变的主体部分提取到抽象类中,作为模版方法,便于维护
点击查看更多内容
9人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦