设计模式--模板模式

定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。
类型:行为类模式
模版方法模式的结构
模版方法模式由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种:

  1. 模版方法:由抽象类声明并加以实现。(final)
public final void prepareTempate(){
   //步骤一:将水煮沸
   boilWater();
   //步骤二:泡制饮料
   brew();
   //步骤三:将饮料倒入杯中
   pourInCup();
   //步骤四:加入调味料
   addCondiments();
}

private void boilWater(){
 //煮水处理
}
private void pourInCup(){
//倒入杯中
}

2.抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现。

protected abstract void brew();
protected abstract void addCondiments();

3.钩子方法:由抽象类声明并加以实现。但是子类可以去扩展,子类可以通过扩展钩子方法来影响模版方法的逻辑。

//钩子函数,提供一个默认或空的实现
if(isCustomerWant()){
  addCondiments();
}
//子类可以看到它
protected boolean isCustomerWant(){
  return true;
}

总结:在多个子类拥有相同的方法,并且这些方法逻辑相同时,可以考虑使用模版方法模式。在程序的主框架相同,细节不同的场合下,也比较适合使用这种模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值