策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
策略模式类图:
策略模式与设计原则:
封装变化
把会变化的部分取出来并封装起来,以便以后可以轻易的改动或者扩展此部分,而不影响不需要变化的其他部分。(找出应用中可能需要变化的部分,把他们独立出来,不要和那么不需要变化的代码混在一起)。
针对接口编程,而不是针对实现编程
这里所谓的接口,是指广义的接口,而非狭义的JAVA接口。泛指针对“超类型的编程”
多用组合,少用继承
组合与继承是复用的两个常用的方法。
组合:我们把职责独立出专门的类族,外部对象通过引用最高层的抽象接口来实现复用。当我们需要复用这部分功能时,只需要委派我们引用接口的具体对象来完成调用即可。对于外部引用者来说,他们不需要关心也不知道具体执行者是谁,从而达到解耦的目的,方便今后扩展以适应更多的变化。同时组合可以在运行时灵活的变更其运行时的行为,通过setter方法,注入不同的实现类可完成并适应此类需求,而继承在运行时却是无法做到的。
继承:通过直接继承一个类,我们的子类可以直接继承自父类的很多已经实现了的职责与方法,因此通过继承,我们也能达到复用的目的。但继承有自身的问题:
1、JAVA不支持多继承;
2、继承是一种编译期的行为,一旦编译过后就无法改变,我们在运行时无法更改其行为;
继承的目的也是为了组合,如果不是这样,请不要随便使用继承,除非从对象本身来讲,父子之间本来就是一种(IS A)的关系,这时候我们才使用继承。
参考资料:
Head First 设计模式 (中国电力出版社)
- 大小: 24.7 KB
分享到:
相关推荐
走进设计模式之 策略模式(Strategy) 代码
本文实例讲述了PHP设计模式之 策略模式Strategy。分享给大家供大家参考,具体如下: 1.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法...
这份文档讲诉了设计模式之策略(Strategy)模式,希望可以帮助学习的人!
设计模式C++学习之策略模式(Strategy)
设计模式-策略模式(Strategy)结合Android小知识讲解,简单明了
C#面向对象设计模式 (行为型模式) Strategy 策略模式 视频讲座下载
【Java设计模式】(2)策略模式Strategy
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式
在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
创建模式: 设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) ...设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、设计模式之Strategy(策略) 10、设计模式之...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第23节:行为型模式Strategy策略模式
NULL 博文链接:https://bossshit.iteye.com/blog/715672
设计模式 策略模式。金典模式之策略模式代码。
c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...
设计模式参考文档 创建模式: 设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder ...设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
java设计模式之策略模式 内含策略模式讲解ppt 自己根据ppt写了一个小例子 先不用策略模式 后用策略模式 形成了鲜明对比 对初学者很有用
主要为大家详细介绍了C++设计模式之策略模式Strategy,具有一定的参考价值,感兴趣的小伙伴们可以参考一下