为了账号安全,请及时绑定邮箱和手机立即绑定

策略模式和模板模式该怎么区分?

策略模式和模板模式该怎么区分?

慕仙森 2018-08-03 21:27:32
看了这两个设计模式之后, 对于简单直接的例子可以判断, 策略模式就是定义算法族, 然后通过组合算法族和委托的办法来实现类, 模板方法则是父类定义算法的骨架,子类再来实现骨架中的部分步骤;但是有两个例子我很不理解:1. thingking in java里面有讲到File.list(FilenameFilter filter)和FilenameFilter就是策略设计模式. 这是书中的原文:因为list()实现了基本的功能, 而且按照FilenameFilter的形式提供了这个策略, 以便完善list()在提供服务时所需的算法我觉着 list()在内部使用FilenameFilter, 也可以理解为File定义好了算法骨架, 由FilenameFilter补齐部分步骤, 这么想 这就是 模板方法; Arras.sort()head first设计模式 里面讲到Arrays.sort(Object[] objects)和``Comparable```是模板方法设计模式. 这是head first的原文:因为这个模式的重点在于提供一个算法, 并让子类实现某些步骤而数组的排序做法明显也是如此.我是这么想的: sort()函数提供了基本的功能, 元素的比较由comparable算法族来实现; 我这样想, sort()函数就是策略模式;到底这两者该怎么区分呢? 还是我的理解哪里有问题?
查看完整描述

2 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

设计模式只是抽象的结果。而抽象的主要作用就是增加代码的可读性,复用性和可扩展性。所以不用刻意去在乎到底使用的是模板还是策略。

查看完整回答
反对 回复 2018-08-06
  • 2 回答
  • 0 关注
  • 1862 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信