模板方法模式----深入浅出(二)
来源:互联网 发布:comicrack是什么软件 编辑:程序博客网 时间:2024/06/15 05:39
上一篇小编叙述模仿方法模式
模板方法模式----深入浅出(一)
目录
1、概述
2、结构与分析
3、拓展
4、模式总结
3、拓展
钩子方法给子类留了“后门”可以通过在子类中实现的钩子方法对父类方法的执行进行约束,实现子类对父类行为的反向控制。(体现灵活性)
上篇博客续集,情侣之间约约会,看看电影,喝喝咖啡,调情调情还是不错的。说到喝咖啡,这不来到星巴克咖啡店,我们要了一杯咖啡,当漂亮的服务员问你:“先生,您是否要加调料?”你是呆呆地站在那……还是站在那……还是站在那……
为了使用钩子,我们在子类中覆盖它,在这里,钩子控制了咖啡饮料是否执行某部分算法,说得更明确些,就是饮料中是否要加进调料。
先看类图:
说明:咖啡因饮料为抽象类,其中封装了一系列步骤方法,第一步:水煮沸(boilWater)、第二步:泡(brew)、第三步:放入杯子(pourInCup)、第四步:加调料(addCondiments),模板方法(prepareRecipe)中封装以上的步骤。
在类图中咱需要注意的是钩子方法(customerWantsCondiments),在下面的代码中,钩子方法的返回值的类型是boolean型,默认返回值为true,在子类中可以根据实际情况覆盖该方法,其中用于具体子类Coffee代码决定是否要实现父类的方法。
在具体子类CaffeeWithhook中覆盖了钩子方法customerWantsCondiments(),返回false,表示客户无需添加任何调料。如果顾客“想要”调料,返回ture时,此时我们才调用addCodiments()方法。
客户端代码如下:
4、模式总结
模板方法应用于下列情况:
• 1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
• 2)基于继承的代码复用技术
• 3)控制子类扩展(钩子方法)。
金无足赤,人无完人。模板模式固然很好,但也存在一些缺点:
每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象,但是更加符合“单一职责原则”,使得类的内聚性得以提高。(桥接模式相结合使用)
- 模板方法模式----深入浅出(二)
- 深入浅出模板方法模式
- 模板方法模式----深入浅出(一)
- 深入浅出设计模式之模板方法模式
- 模板方法模式深度解析(二)
- 模板方法模式深度解析(二)
- 模板方法模式深度解析(二)
- 模板方法模式深度解析(二)
- 模板方法模式深度解析(二)
- 深入浅出设计模式(二)
- 深入浅出外观模式(二)
- 深入浅出外观模式(二)
- 深入浅出外观模式(二)
- 深入浅出设计模式-009:模板方法模式(Template Method Pattern)
- 深入浅出Java模式设计之模板方法模式
- 深入浅出Java模式设计之模板方法模式
- 深入浅出Java模式设计之模板方法模式
- 深入浅出设计模式笔记之十九:模板方法模式
- android服务调用
- HDU 4462 Scaring the Birds (2012年杭州赛区现场赛J题)
- ios开发进阶之网络04 数据解析 文件下载上传
- while循环语句,按照既定规律输入数字,提示正确与否
- 鸡兔同笼
- 模板方法模式----深入浅出(二)
- 二叉树的定义、性质、存储
- Swift UIView 常用添加方法
- Android Listview横向滑动
- Apache Shiro 10分钟之旅!
- 8月的总结---适应职场,锤炼自我
- 循环-12. 打印九九口诀表(15)
- 面试题3:二维数组中的查找
- 数据结构中排序算法-交换排序(2)