[设计模式-行为型]策略模式(Strategy)
2016-03-16 10:43
441 查看
一句话
在一个类的对象中维护策略的类的对象.看起来和状态模式很类似。
概括
解析
STRATEGY—跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去海边浪漫最合适,但目的都是为了得到MM的芳心,我的追MM锦囊中有好多Strategy哦。策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。
实例
产品的生产有不同的原料组合策略。包含的文件:
一个策略的抽象类(Strategy.java)
两个策略的实现类(StrategyImpl1.java, StrategyImpl2.java)
产品类 (Product.java)
测试主类 (TestMain.java)
/** * @author oscar999 * @date 2015-1-8 * @version V1.0 */ package designptn.strategy; public abstract class Strategy { public abstract void method(); }
/** * @author oscar999 * @date 2015-1-8 * @version V1.0 */ package designptn.strategy; /** * @author Administrator * */ public class StrategyImpl1 extends Strategy { @Override public void method() { // TODO Auto-generated method stub System.out.println("Strategy 1"); } }
/** * @author oscar999 * @date 2015-1-8 * @version V1.0 */ package designptn.strategy; /** * @author Administrator * */ public class StrategyImpl2 extends Strategy { @Override public void method() { // TODO Auto-generated method stub System.out.println("Strategy 2"); } }
/** * @author oscar999 * @date 2015-1-8 * @version V1.0 */ package designptn.strategy; public class Product { Strategy stra; public Product(Strategy stra) { this.stra = stra; } public void doMethod(){ stra.method(); } }
/** * @author oscar999 * @date 2015-1-8 * @version V1.0 */ package designptn.strategy; /** * @author Administrator * */ public class TestMain { public static void main(String[] args) { // TODO Auto-generated method stub Product product = new Product(new StrategyImpl1()); product.doMethod(); product = new Product(new StrategyImpl2()); product.doMethod(); } }
相关文章推荐
- 成都Uber优步司机奖励政策(3月16日)
- 涂鸦,Canvas绘图
- 大数据上的流式SQL引擎——StreamCQL
- POJ 2229 Sumsets(数的划分)
- 内存管理 浅析
- 淘宝Kissy框架使用记录
- 最实用大数据可视化分析工具
- 全国软件-----------猜生日
- web接口测试
- NTP服务器时间同步
- js上下浮动广告
- 62. Unique Paths && 63 Unique Paths II
- 锋利的JQuery 学习笔记
- ****DISPLAY environment variable not set! Oracle Net Configuration Assistan
- 邮箱、帐号、手机号和电话的javascript正则表达式验证方法
- js偏门知识的理解
- 嵌入式Linux开发流程
- 时间
- find new friend
- 全国软件---------欧拉与鸡蛋