2.2 模板方法模式(5.10)

看一本关于设计模式的书,首先翻阅其模板方法模式。一方面,模板方法模式极为基础,也包含很多设计思考;另一方面,它反映作者对设计模式的理解程度,这一章写得不好,一定是水货师傅。

【模板方法模式放在哪里讲,我一直在变来变去;因此,模板方法模式中需要讲些什么,也就时刻在变动。目前的文档结构我比较满意,决定放在第二章行为参数化中。以前我写的关于模板方法模式的一些垃圾博客,都将被删除——垃圾桶中放久了,也该倒掉了

我的思路是:从模板方法模式的使用场景为出发点。(1)通用函数, 以2.2.1求和函数为例;(2)代码向上集中——在面向对象领域,模板方法模式通常用于在各种子类已有代码的基础上,提取公共的行为并集中到父类中,以免代码重复。】

2.2.1 求和函数

 实验4 求和方法的一般化

这一使用模板方法模式的场景,属于功能抽象,其中模板方法实现了一个算法的框架。无论什么编程语言,都采用自己的技术对模板方法模式加以支持,所采用的技术即为C的函数指针、Scheme的高阶函数和Java的动态绑定。

因此,对于模板方法模式而言,其核心是设计出模板方法。至于描述可变部分的抽象方法如何封装,并非其要点。“将它的一些步骤延迟到子类中”不过是一种设计选项。比较Scheme语言的实现,更好的选择是行为参数化。

2.2.2 策略模式的扩展

1. 避免类型爆炸 为了避免类型爆炸问题,通常多次使用策略模式——或者说使用多重策略。模板方法模式、桥接模式、装饰模式等等均面临类型爆炸问题,所以都使用了多重策略。

2. 应对无限可能 应对无限可能的最佳选项是行为参数化

2.3.3不要教条主义

本节说明对模板方法模式的一些解释,许多地方与GoF的解释不同。

模板方法模式的意图

可变步骤如何设计

强制子类使用改进语意的改写

关于钩子方法

2.3.4更强的通用性

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值