策略模式和模板模式有什么区别-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

策略模式和模板模式有什么区别

2016-02-25 11:31:50 3197 1

看了这两个设计模式之后, 对于简单直接的例子可以判断, 策略模式就是定义算法族, 然后通过组合算法族和委托的办法来实现类, 模板方法则是父类定义算法的骨架,子类再来实现骨架中的部分步骤;
但是有两个例子我很不理解:

  1. thingking in java里面有讲到File.list(FilenameFilter filter)和FilenameFilter就是策略设计模式. 这是书中的原文:
    因为list()实现了基本的功能, 而且按照FilenameFilter的形式提供了这个策略, 以便完善list()在提供服务时所需的算法

我觉着 list()在内部使用FilenameFilter, 也可以理解为File定义好了算法骨架, 由FilenameFilter补齐部分步骤, 这么想 这就是 模板方法; Arras.sort()
1.head first设计模式 里面讲到Arrays.sort(Object[] objects)和Comparable`是模板方法设计模式. 这是head first的原文:
因为这个模式的重点在于提供一个算法, 并让子类实现某些步骤而数组的排序做法明显也是如此.
我是这么想的: sort()函数提供了基本的功能, 元素的比较由comparable算法族来实现; 我这样想, sort()函数就是策略模式;
到底这两者该怎么区分呢? 还是我的理解哪里有问题?

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:47:20

    •策略(Strategy),对象行为型模式 =》使用组合的方式
    •模板方法(Template method),类行为型模式 =》 使用继承的方式
    Head First里面问答里面有说明
    因为策略模式使用对象组合。在某种程度上,你是对的——我们使用数组对象排序我们的数组,这部分和策略模式非常相似。但是请记住,在策略模式中,你所组合的类实现了整个算法。数组所实现的排序算法并不完整,它需要一个类填补compareTo()方法的实现。因此,我们认为这更像模板方法。
    Arrays类里面还有另外一个api:
    public static void sort(T[] a,

            Comparator<? super T> c)

    将Comparator也当成一种算法看的话,感觉这个api更像策略模式。
    白话一点,模板方法模式的对象只是实现了算法的某个步骤,具体的算法大部分定义在父类里。而策略模式的对象实现了整个算法。

    0 0
相关问答

40

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 144712浏览量 回答数 40

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 226134浏览量 回答数 162

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 336998浏览量 回答数 8

13

回答

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

心意乱 2018-10-31 18:44:12 142454浏览量 回答数 13

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295534浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147229浏览量 回答数 22

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 646764浏览量 回答数 18

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 146034浏览量 回答数 31

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 136951浏览量 回答数 42

10

回答

[@墨玖tao][¥20]为什么流式处理框架都是 java 写成的,JVM 是不是在流和批存在着特殊优势。还有分布式资源调度,感觉Mesos 的成长速度跟不上 Yarn。这是为什么?

管理贝贝 2018-10-23 13:18:03 136465浏览量 回答数 10
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载