- 模版设计模式通俗的说法:
- 使用公共父类实现一个算法不变的部分,让子类来实现可变的部分。
- 例子:泡一杯茶或者咖啡:
- 第一步:将水煮沸 ------------------------不变的部分
- 【Java常见的4种设计模式——模版模式】第二步:加入咖啡或者茶--------------------可变的部分
- 第三步:将饮料导入杯子中------------------不变的部分
- 第四步:根据咖啡或者茶加入不同的调味品-------可变的部分
- 第一和第三步,不管泡茶还是咖啡都需要做的不变的部分,这个用公共父类来实现。
- 第二和第四步,需要根据咖啡或者茶采取不同的做法,这个通过子类来实现。
/**
* 模版设计模式通俗的说法:
* 使用公共父类实现一个算法不变的部分,让子类来实现可变的部分。
*
* 例子:泡一杯茶或者咖啡:
* 第一步:将水煮沸 ------------------------不变的部分
* 第二步:加入咖啡或者茶--------------------可变的部分
* 第三步:将饮料导入杯子中------------------不变的部分
* 第四步:根据咖啡或者茶加入不同的调味品-------可变的部分
*
* 第一和第三步,不管泡茶还是咖啡都需要做的不变的部分,这个用公共父类来实现。
* 第二和第四步,需要根据咖啡或者茶采取不同的做法,这个通过子类来实现。
*/public abstract class masterplateModel {
public void makeDrink(){
//* 第一步:将水煮沸 ------------------------不变的部分
boiling();
//* 第二步:加入咖啡或者茶--------------------可变的部分
add();
//* 第三步:将饮料导入杯子中------------------不变的部分
fall();
//* 第四步:根据咖啡或者茶加入不同的调味品-------可变的部分
sauce();
}public void boiling(){
System.out.println("将水煮沸");
}
public abstract void add();
//使用抽象方法,让子类根据情况自我实现
public void fall(){
System.out.println("将饮料导入杯子中");
}
public abstract void sauce();
//使用抽象方法,让子类根据情况自我实现
}
/**
* 每个子类只实现父类中不一样的方法
*/public class Tea extends masterplateModel{
@Override
public void add() {
System.out.println("加入茶");
}@Override
public void sauce() {
System.out.println("加入柠檬或者奶");
}
}
/**
* 每个子类只实现父类中不一样的方法
*/
public class Coffee extends masterplateModel{
@Override
public void add() {
System.out.println("加入咖啡!~");
}
@Override
public void sauce() {
System.out.println("加点糖!~");
}
}
public class masterplateDemo {
public static void main(String[] args) {
masterplateModel tea = new Tea();
tea.makeDrink();
masterplateModel coffee = new Coffee();
coffee.makeDrink();
}
}
文章图片
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)