模板模式,官方解释是这样的:
也就是说,父类提供公共方法,子类提供自定义方法。
这里,我想模拟一个场景,就是比如我们去买手机,品牌手机都会送礼物,不同的品牌送的礼物不一样。这样,我们就可以让父类实现固定逻辑,子类实现不同品牌送礼物的逻辑。
代码:
父类:
public abstract class Gift {
// 买手机总流程
protected void doSend(){
sendBefore();
send();
sendAfter();
}
// 赠送前
private void sendBefore() {
System.out.println("忽悠你买手机......");
}
// 赠送礼物
protected abstract void send();
// 赠送后
private void sendAfter() {
System.out.println("完成购买,礼物已赠送!");
}
}
子类1:
小米子类:
public class Mi extends Gift{
@Override
protected void send() {
System.out.println("送了个小米耳机");
}
}
子类2:
苹果子类:
public class Apple extends Gift{
@Override
protected void send() {
System.out.println("送了个寂寞");
}
}
测试类:
public class Test {
public static void main(String[] args) {
Gift gift = new Mi();
gift.doSend();
gift = new Apple();
gift.doSend();
}
}
结果:
买手机中......
送了个小米耳机
完成购买,礼物已赠送!
买手机中......
送了个寂寞
完成购买,礼物已赠送!
自此,一个简单的模板模式就学会了,恭喜!