[设计模式-行为型]策略模式(Strategy)
一句话
在一个类的对象中维护策略的类的对象.
看起来和状态模式很类似。
概括
解析
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)相关推荐
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...
- 设计模式之略见一斑(策略模式strategy)
java设计模式 写道 策略模式在在给定的输入条件下,实现某个目标的计划或者方案.策略与算法类似:算法是定义好的过程,它能够提供一组输入产生一个输出.而策略是一个计划,它也涉及如 ...
- [设计模式](十):策略模式(Strategy)与模板模式(Template)详解及二者间区别介绍(两种父子类行为模式)
这次要说的两个模式,都是行为模式,指的是在程序运行过程中,经过经验总结的行为开发模式. 其次,行为模式再按照类与类间关系的划分,可以划分为四个类型:父子关系(2种).独立类间关系(4种).类自身状态( ...
- 设计模式实战-策略模式(Strategy Pattern)
0 联系我 图片标题 1.Q群[Java开发技术交流]:jq.qq.com/?_wv=1027&a- 2.完整博客链接:www.shishusheng.com 3.知乎:www.zhihu.c ...
- 设计模式-策略模式(Strategy)-Java
设计模式-策略模式(Strategy)-Java 目录 文章目录 1.前言 2.示例案例-电影票打折方案 3.策略模式概述 3.1.策略模式定义 3.2.策略模式结构 3.3.策略模式结构图中角色 3 ...
- 解读设计模式----策略模式(Strategy Pattern)
一.模式概述 策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同.其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法. 在我应 ...
- 设计模式--策略模式(strategy)
1.策略模式(strategy ['strætədʒi]) 我的理解是:方案候选模式 (反正关键就是有很多的候选,哈哈) 看了很多例子,都是在说鸭子的,那个例子很好,在这里可以看 他们生产鸭子,我们就 ...
- 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)
在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了"工厂模式"."策略模式" ...
- 8.6 GOF设计模式四: 策略模式… Strategy Pattern
策略模式- Strategy Pattern 在POS系统中,有时需要实行价格优惠, 该如何处理? 对普通客户或新客户报全价 对老客户统一折扣5% 对大客户统一折扣10% 注:课件 ...
最新文章
- 查询mysql存储数据大小_MySQL如何查询数据占用存储空间的大小?
- Ubuntu常用基础命令
- mysql 共享锁和排他锁 意向锁 记录锁 Gap Locks Next-Key Locks 插入意向锁介绍
- python去掉字符串中空格的方法
- POJ 2240 ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0
- css3-background clip 和background origin
- docker 中 安装 openssh-server
- android 传输日期,Android 跟日期和时间有关的操作
- 2019五一建模A题思路
- Matlab 2019b AudioToolBox设备环境测试
- 富集分析:(一)概述
- win10系统登录服务器密码存储位置,win10远程服务器登录密码
- python写一个数字字典生成器
- java mail 附件 dat,邮件附件winmail.dat文件的正确打开姿势
- MFC com控件类
- CSS实现聊天气泡(三角形)
- 计科专业新生须知:什么才是编程?助你进阶大牛的必经之路
- x86汇编_JE、JNE、JCXZ 和 JECXZ 指令_笔记_34
- 别让外包关系在谈判后止步(转)
- 搭建JSP运行环境(Eclipse for java EE Developers+Tomcat7.0.79)
热门文章
- 为了搞懂什么是区块链,我都快抑郁了(转)
- 自定义标题栏右键菜单
- .Net Mvc Automated Migration 数据迁移
- ios模拟器键盘不弹出
- Android 自定义View自定义属性的声明
- python之decorator理解
- 彻底解决Python3写爬虫或网站时的乱码问题
- ASP.NET Core搭建多层网站架构【11-WebApi统一处理返回值、异常】
- vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案
- tar.bz2解压异常