策略模式
是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。
策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。
一句话来形容:准备一组算法,并将每一个算法封装起来,使得他们可以互换
策略模式的结构
策略模式涉及到三个角色:
- 环境角色:持有一个Strategy类(策略类)的引用
- 抽象策略角色:策略类,通常由一个接口或者抽象类实现
- 具体策略角色:包装了相关的算法和行为
《三国演义》中的故事
诸葛亮的精囊妙计三条妙计
走乔国老的后门,求孙国太放人,请孙夫人退兵
赵云按计行事
环境角色:赵云由他来决定选择策略
抽象策略角色:(接口)精囊妙计按计行事(抽象方法)
具体策略角色:三条妙计(单独使用的)
例子:一个策略模式的加减乘除
抽象策略角色: (精囊妙计) Operation抽象类(oper抽象方法)
具体策略角色: (三条妙计) 计算乘积,计算除法,计算加法,计算减法
环境角色: (赵云) 有一个策略类( Operation )的引用
策略模式的优缺点:
优点:
1.提供了管理相关的算法族的办法。
2.提供了可以替换继承关系的办法。
3.避免使用多重条件转移语句
缺点:
1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2.造成很多的策略类。
分享到:
相关推荐
设计模式-策略模式(Strategy)结合Android小知识讲解,简单明了
在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
走进设计模式之 策略模式(Strategy) 代码
比如说我要出行旅游,那么出行方式有--飞机、自驾游、火车等,这几种方式就是策略。再比如:某大型商场搞活动--满 100元送杯子,满300减50,满1000元抽奖「一等将彩色电视机」,这种活动也是策略。在游戏中,我们打...
设计模式C++学习之策略模式(Strategy)
设计模式内部培训资料-详细介绍了策略模式。
C#面向对象设计模式 (行为型模式) Strategy 策略模式 视频讲座下载
c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...
微信小程序--使用策略模式进行表单验证strategy-master.zip
python库。 资源全名:django-strategy-field-1.1.1.tar.gz
创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4.... 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)
设计模式 策略模式。金典模式之策略模式代码。
这是Java的模式编程,中重要的策略模式,策略模式降低了程序了耦合度,使得程序易于移植!
Strategy.rarStrategy.rarStrategy.rarStrategy.rarStrategy.rar策略设计模式
6. 策略模式 (Strategy Pattern) 7. 适配器模式 (Adapter Pattern) 8. 模板方法模式 (Template Pattern) 9. 建造者模式 (Builder Pattern) 10. 原型模式 (Prototype Pattern) 11. 组合模式 (Composite ...
设计模式--策略模式StrategyPattern
创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) ... 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern) @Author kwming
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each ...
一个把数组导出为表格的算法,输入一个数组,导出一个表格,当用户想改变导出的表格时,便可以通过改变输出的算法改变输出的结果。如果输出的内容用以网页显示,则输出 <table><tr><td>Jack</td></tr><tr><td>Maya...