设计模式之模板方法模式学习

参考地址:https://blog.csdn.net/u013393958/article/details/80231327

总结:

模板方法模式的实现要素:

1 抽象基类

(1)基本方法

例如:/*基本方法,将水煮沸*/

private void boilWater(){

  System.out.println("将谁煮沸");

}

/*基本方法,将饮料倒入杯中*/

private void pourInCup(){

    System.out.println("将饮料倒入杯中");

}

(2)抽象方法

例如:

/*抽象的基本方法,泡制饮料*/

protected abstract void brew();

(3)可选的钩子

例如:/*

*Hook,钩子函数,提供一个默认或空的实现,具体的子类可以自行决定是否挂钩以及如何挂钩

*询问用户是否加入调料

*/

protected boolean isCustomerWantsCondiments(){

      return true;

}

(4)Template方法(final)

/*

*制备饮料的模板方法

*封装了所有子类共同遵循的算法框架

*/

public final void prepareBeverageTemplate(){

  //步骤1将水煮沸

boilWater();

//步骤2 泡制饮料

brew();

//步骤3 将饮料倒入杯中

pourInCup();

if(isCustomerWantsCondiments()){

    //步骤4 加入调味料

    addCondiments();

}

}

2 具体子类。

(1)实现基类中的抽象方法

(2)覆盖钩子方法

模板方法模式的实现要素

准备一个抽象类,将部分逻辑以具体方法的形式实现,然后声明一些抽象方法交由子类实现剩余逻辑,用钩子方法给予子类更大的灵活性。最后将方法汇总构成一个不可改变的模板方法。

模板方法模式的适用场景

(1)算法或操作遵循相似的逻辑。

例如:

(2)重构时(把相同的代码抽取到父类中)

(3)重要、复杂的算法那,核心算法设计为模板算法

模板方法模式的优点

(1)封装性好

(2)复用性好

(3)屏蔽细节

(4)便于维护

模板方法模式的缺点

继承方面的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值