模板模式
在模板设计模式中,父类定义算法结构代码,子类实现逻辑的细节
1、模板设计模式的定义:
定义一个操作中算法的骨架,而将一些步骤延续到子类中,模板方法使得子类可以不改变算法的机构即可重新定义该算法的某些特定步骤。
定义中描述的是,做一件事情,有一些固定的步骤,但是每个步骤的具体实现细节根据场景不同实现的逻辑会不同。可以在父类中将事情的固定步骤定义下来,然后再子类中将这些具体的步骤实现。
2、用法实例:
比如我们平时叫外卖,可以分为三个步骤(1)下订单、(2)取外卖、(3)评价反馈。这三个步骤就是整个事件的算法骨架。而每一个步骤怎么做,根据每个人的情况不同会有不同的做法。
代码实现:
(1、首先定义一个父类定义算法的骨架:
public abstract class TakeOutTemplate {
/**
* 这个过程的骨架
*/
protected final void doTakeOut() {
this.older();
this.takeGoods();
this.evaluation();
}
/**
* 下订单
*/
public abstract void older();
/**
* 取餐
*/
public abstract void takeGoods();
/**
* 评价
*/
public abstract void evaluation();
}
(2)、用美团软件实现叫外卖的具体步骤
public class MeiTuanTakeout extends TakeOutTemplate {
@Override
public void older() {
System.out.println("使用美团平台下单");
}
@Override
public void takeGoods() {
System.out.println("跟美团外卖员取外卖");
}
@Override
public void evaluation() {
System.out.println("给美团商家和外卖员评价");
}
}
(3)、用饿了么软件实现叫外卖的具体步骤
public class HungryTakeOut extends TakeOutTemplate {
@Override
public void older() {
System.out.println("使用饿了么平台下单");
}
@Override
public void takeGoods() {
System.out.println("跟饿了么员工取外卖");
}
@Override
public void evaluation() {
System.out.println("给饿了么商家和外卖员评价");
}
}
(4)、测试叫外卖
public class TakeOutTemplateTest {
public static void main(String[] args) {
TakeOutTemplate meituan = new MeiTuanTakeout();
meituan.doTakeOut();
System.out.println("************************");
TakeOutTemplate hungry = new HungryTakeOut();
hungry.doTakeOut();
}
}