前言
在实习时候看公司源码时遇到模板方法设计模式,没有看出来,准确的说对该设计模式掌握程度不够,来回顾一下什么是模板方法设计模式。
一、什么是模板方法设计模式?
所谓模板方法设计模式,就是从模板的角度来出发,把可共用部分,设计成为一个模板,大家都可以使用,举个例子吧,比如现在要进行一个问卷调查,每个人要填的问卷都是一样的,都是从最初的问卷那里复印的,这个最初的问卷,就像是一个模板。每个人拿到问卷后填写的答案都是不一样的,子类继承父类公共部分(问卷问题),子类实行自己的操作(填答案),是不是形象生动。它的主要作用是将子类公共的、不变的操作搬到父类中,可以去掉大量重复代码。
二、优缺点
1.优点
- 封装共用部分,拓展可变部分
- 提取公共代码,提高开发效率,便于维护
- 父类控制行为,子类进行实现
2.缺点
- 每一个不同的操作都要实现一个子类实现,导致类的个数增加,使得系统更加庞大
3.代码演示
1、抽象模板类——问卷
public abstract class Question{
//问题
public void questions1(){
System.out.println("请问你喜欢博主吗?");
System.out.println("答案:" + answer1());
}
public void questions2(){
System.out.println("博主是不是世界上最帅的男人?");
System.out.println("答案:" + answer2());
}
//答案
public abstract String answer1();
public abstract String answer2();
}
2、具体实现类PersonOne
public class PersonOne extends Question {
@Override
public String answer1() {
return "喜欢,太喜欢了!";
}
@Override
public String answer2() {
return "博主天下第一帅,i了i了";
}
}
2、具体实现类PersonTwo
public class PersonTwo extends Question {
@Override
public String answer1() {
return "不喜欢,他太帅了,我有点嫉妒";
}
@Override
public String answer2() {
return "不帅(言不由衷)";
}
}
3、main方法测试结果
public static void main(String[] args) {
System.out.println("PersonOne的问卷结果:");
Question person1 = new PersonOne();
person1.questions1();
person1.questions2();
System.out.println("----------------------");
System.out.println("PersonTwo的问卷结果:");
Question person2 = new PersonTwo();
person2.questions1();
person2.questions2();
}
4、运行截图
总结
Good Good Study,Day Day up!