2004年10月9日星期五

Robert C. Martin的“Agile Software DevelopmentPrinciplespatternsPractices”中关于Template Method模式和Strategy模式的比较。

 

1.  书中给出了一个滥用Template Method模式的例子,并不是Template Method模式本身不好,而是由于冒泡排序这个算法放在基类里实现,由其派生类实现具体算法步骤,不是一个好主意,因为对这个算法本身在具体实现(对排序类型)由派生类来实现,但是确无法应对冒泡这个算法本身的变动(QuickBubbleSorter)这种情况,于是这个模式的实现就变成了对模式的滥用。

2.  相反使用继承加大了算法步骤和具体实现方法两个可变因素的耦合,违反了DIP原则:高层模块和底层模块之间应该使用接口隔离。

3.  从这个例子中可以看出:Template Method模式适合使用在抽象的通用算法基本结构极少会发生改变的情况,而Strategy模式则适用在算法基本结构较易发生变化而实现步骤具有多种实现的情形,因此Strategy模式抽象的难度较大,并且隔离二者的接口的设计尤为重要。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值