Strategy模式 的应用场景是:
1. 多个类的分别只是在于行为不同
2. 你需要对行为的算法做很多变动
3. 客户不知道算法要使用的数据
Template Method模式 的应用场景是:
1. 你想将相同的算法放在一个类中,将算法变化的部分放在子类中实现
2. 子类公共的算法应该放在一个公共的类中,避免代码重复
我们知道,设计模式中有这么一个原则: Prefer composition to inheritance.
这句话的背景是OO初期大家都把继承看作是万能的,并过度使用继承来实现多态->可扩展.
理解原则的时候不能脱离它的背景,不然就成盲从了.Template Method模式应该是伴随着OO的出现而萌生的.它是OO中最直观的思考方式的结果.基类留下可变化的空间给子类,由继承类来决定具体行为.听起来是不错,不过...一旦基类的接口发生了变化,每个继承类都得跟着修改才能够继续使用.这就是所谓高耦合与难维护的说法的来源.
Strategy与Template Method模式算是composition与inheritance的典型应用了
GoF的设计模式那本书里有这么一句话:"Template methods use inheritance to vary part of an algorithm. Strategies use delegation to vary the entire algorithm.", 说的正是这个问题.回到具体问题上,
如果我们要封装的算法适合于提供给用户任意使用,是"一整个算法",那么用Strategy模式较好;
如果要封装的变化是一个算法中的部分(换言之,大算法的步骤是固定的),而且我们不希望用户直接使用这些方法,那么应该使用Template Method模式.
就此,问题的"痛处"算是抓住了.
分享到:
相关推荐
7. **模板模式与其他设计模式的对比**:对比模板模式与策略模式、工厂模式等其他设计模式的异同,帮助学习者理解各种模式间的联系和区别。 8. **实战演练**:可能包含一些练习题或案例分析,让学习者亲手实践模板...
建筑和软件中模式之异同 A. 创建模式 设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之 Factory(工厂方法和抽象工厂) ...
- **策略模式**:定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。 - **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - **观察者模式**:定义了对象间的一种一对多的...
比如,男性和女性的购买行为有何异同?高收入群体与低收入群体在选择商品时的关注点是否一致?这些洞察可以帮助企业定位目标市场,调整产品特性以满足不同消费者群体的需求。 此外,该模板可能还利用Excel的数据...
- **本品牌与竞争对手的定位策略比较**:比较自身与竞品在市场定位上的异同。 - **品牌建设问题点和不足之处**:识别品牌建设过程中存在的问题。 - **产品分析**: - **产品类别分析**:界定产品的市场分类。 - **...
【申论高分万能必背模板.doc】的文件内容主要涉及的是申论写作的技巧和策略,这是公务员考试中的一个重要部分。申论主要考察考生的阅读理解、问题分析、综合论述和解决问题的能力。以下是对文件中提到的知识点的详细...
1. **产品特性**:列出每个竞品的主要功能,对比它们的特性和自家产品的异同,分析哪些特性受到用户欢迎,哪些可能需要改进。 2. **用户体验**:评估竞品的界面设计、易用性、响应速度等,看是否能满足用户需求。 3....
这种模板适用于探讨两个或多个事物之间的异同,通过对比分析,突出主题。首先提出对比的对象,然后分别阐述其特点,最后总结它们的共同点和不同点,以此论证自己的观点。 第三大模板是“问题—解决方案”模式。这类...
- **常见设计模式**:熟悉工厂模式、单例模式、观察者模式、装饰者模式、策略模式等,并能在实际项目中应用。 这些是C++面试中可能涉及的主要知识点,深入理解和掌握这些内容,对于提升面试表现和实际工作能力都至...
template模板方法模式、memento备忘录模式、observer观察者模式、command命令模式、state状态模式、strategy策略模式、mediator调停者模式、interpreter解释器模式、visitor访问者模式、chain of responsibility责任...
《公共关系学》是一门研究组织与公众之间关系的学科,旨在通过有效的沟通策略和活动,建立和维护组织的良好形象,提高其知名度和美誉度。复习大纲主要涵盖以下几个方面的知识点: 1. **名词解释**: - 公共关系:...
- 行为型模式:如策略、模板方法、观察者、迭代器、责任链、命令、备忘录、解释器模式。 7. **其他** - 架构设计:MVC、微服务、SOA等架构模式的理解和应用。 - 性能优化:包括代码优化、数据库查询优化、服务器...
通过对比分析如天猫和京东这样的大型电商平台,可以揭示它们在产品分类、服务保障、用户体验等方面的异同,从而提升自身的电子商务运营策略。 2. **基本原理与方法**:运营分析通常涉及对网站流量、转化率、用户...
《公共关系学》是一门研究组织与公众之间关系的学科,旨在通过有效的沟通策略和活动,建立和维护组织的良好形象,提高知名度和美誉度。复习大纲涵盖了从基础概念到实践应用的各种知识点,以下是对这些内容的详细解读...
【沟通技巧】沟通是职场中不可或缺的元素,包括理解沟通的重要性、定义、模式和种类。有效的沟通需要基础的理解,遵循一定的原则,并在实际应用中不断实践。良好的沟通能力能够增进团队协作,解决冲突,促进信息的...
虽然主要讨论的是微信小程序,但压缩包中可能也包含了H5页面源码,这使得开发者可以对比小程序和H5在实现地图定位上的异同,了解在不同平台上的适配和优化策略。 通过研究这个压缩包中的源码,开发者不仅可以掌握...
- 行为型模式:观察者、模板方法、策略、状态、职责链、命令、解释器、迭代器、备忘录模式。 10. **Spring框架** - IoC:理解依赖注入和控制反转的概念,使用XML和注解配置Bean。 - AOP:掌握切面编程,实现日志...
3. 模板方法设计模式:Struts如何利用该模式实现可扩展性和灵活性。 4. Interceptors(拦截器):在Struts2中,拦截器如何增强功能和处理异常。 5. Tiles框架:如何结合Struts用于构建复杂的页面布局。 Spring框架...