一句话

在一个类的对象中维护策略的类的对象.

看起来和状态模式很类似。

概括

解析

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 {@Overridepublic void method() {// TODO Auto-generated method stubSystem.out.println("Strategy 1");}}
/**   * @author oscar999   * @date 2015-1-8* @version V1.0   */
package designptn.strategy;/*** @author Administrator* */
public class StrategyImpl2 extends Strategy {@Overridepublic void method() {// TODO Auto-generated method stubSystem.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 stubProduct product = new Product(new StrategyImpl1());product.doMethod();product = new Product(new StrategyImpl2());product.doMethod();}}

[设计模式-行为型]策略模式(Strategy)相关推荐

  1. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...

  2. 设计模式之略见一斑(策略模式strategy)

         java设计模式 写道       策略模式在在给定的输入条件下,实现某个目标的计划或者方案.策略与算法类似:算法是定义好的过程,它能够提供一组输入产生一个输出.而策略是一个计划,它也涉及如 ...

  3. [设计模式](十):策略模式(Strategy)与模板模式(Template)详解及二者间区别介绍(两种父子类行为模式)

    这次要说的两个模式,都是行为模式,指的是在程序运行过程中,经过经验总结的行为开发模式. 其次,行为模式再按照类与类间关系的划分,可以划分为四个类型:父子关系(2种).独立类间关系(4种).类自身状态( ...

  4. 设计模式实战-策略模式(Strategy Pattern)

    0 联系我 图片标题 1.Q群[Java开发技术交流]:jq.qq.com/?_wv=1027&a- 2.完整博客链接:www.shishusheng.com 3.知乎:www.zhihu.c ...

  5. 设计模式-策略模式(Strategy)-Java

    设计模式-策略模式(Strategy)-Java 目录 文章目录 1.前言 2.示例案例-电影票打折方案 3.策略模式概述 3.1.策略模式定义 3.2.策略模式结构 3.3.策略模式结构图中角色 3 ...

  6. 解读设计模式----策略模式(Strategy Pattern)

    一.模式概述      策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同.其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法.       在我应 ...

  7. 设计模式--策略模式(strategy)

    1.策略模式(strategy ['strætədʒi]) 我的理解是:方案候选模式 (反正关键就是有很多的候选,哈哈) 看了很多例子,都是在说鸭子的,那个例子很好,在这里可以看 他们生产鸭子,我们就 ...

  8. 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)

    在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了"工厂模式"."策略模式" ...

  9. 8.6 GOF设计模式四: 策略模式… Strategy Pattern

    策略模式- Strategy Pattern  在POS系统中,有时需要实行价格优惠, 该如何处理?  对普通客户或新客户报全价  对老客户统一折扣5%  对大客户统一折扣10%  注:课件 ...

最新文章

  1. 查询mysql存储数据大小_MySQL如何查询数据占用存储空间的大小?
  2. Ubuntu常用基础命令
  3. mysql 共享锁和排他锁 意向锁 记录锁 Gap Locks Next-Key Locks 插入意向锁介绍
  4. python去掉字符串中空格的方法
  5. POJ 2240 ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0
  6. css3-background clip 和background origin
  7. docker 中 安装 openssh-server
  8. android 传输日期,Android 跟日期和时间有关的操作
  9. 2019五一建模A题思路
  10. Matlab 2019b AudioToolBox设备环境测试
  11. 富集分析:(一)概述
  12. win10系统登录服务器密码存储位置,win10远程服务器登录密码
  13. python写一个数字字典生成器
  14. java mail 附件 dat,邮件附件winmail.dat文件的正确打开姿势
  15. MFC com控件类
  16. CSS实现聊天气泡(三角形)
  17. 计科专业新生须知:什么才是编程?助你进阶大牛的必经之路
  18. x86汇编_JE、JNE、JCXZ 和 JECXZ 指令_笔记_34
  19. 别让外包关系在谈判后止步(转)
  20. 搭建JSP运行环境(Eclipse for java EE Developers+Tomcat7.0.79)

热门文章

  1. 为了搞懂什么是区块链,我都快抑郁了(转)
  2. 自定义标题栏右键菜单
  3. .Net Mvc Automated Migration 数据迁移
  4. ios模拟器键盘不弹出
  5. Android 自定义View自定义属性的声明
  6. python之decorator理解
  7. 彻底解决Python3写爬虫或网站时的乱码问题
  8. ASP.NET Core搭建多层网站架构【11-WebApi统一处理返回值、异常】
  9. vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案
  10. tar.bz2解压异常