策略模式(策略不同类,场景不同策略不同,环境策略分离组合)
public interface Strategy { public void operate(); }
public class BackDoor implements IStrategy { @Override public void operate() { System.out.println("找乔国老帮忙,让吴国太给孙权施加压力,使孙权不能杀刘备"); } }
1 public class GivenGreenLight implements IStrategy { 2 @Override 3 public void operate() { 4 System.out.println("求吴国太开个绿灯,放行"); 5 } 6 }
1 public class BlackEnemy implements IStrategy { 2 @Override 3 public void operate() { 4 System.out.println("孙夫人断后,挡住追兵"); 5 } 6 }
环境类(Context)
1 public class Context { 2 private Strategy strategy; 3 //构造函数,要你使用哪个妙计 4 public Context(Strategy strategy){ 5 this.strategy = strategy; 6 } 7 public void setStrategy(Strategy strategy){ 8 this.strategy = strategy; 9 } 10 public void operate(){ 11 this.strategy.operate(); 12 } 13 }
下面就是使用的情况了
1 public class LiuBei { 2 3 public static void main(String[] args) { 4 Context context; 5 6 System.out.println("----------刚到吴国使用第一个锦囊---------------"); 7 context = new Context(new BackDoor()); 8 context.operate(); 9 System.out.println("\n"); 10 11 System.out.println("----------刘备乐不思蜀使用第二个锦囊---------------"); 12 context.setStrategy(new GivenGreenLight()); 13 context.operate(); 14 System.out.println("\n"); 15 16 System.out.println("----------孙权的追兵来了,使用第三个锦囊---------------"); 17 context.setStrategy(new BlackEnemy()); 18 context.operate(); 19 System.out.println("\n"); 20 } 21 }
转载于:https://www.cnblogs.com/the-wang/p/7323232.html
策略模式(策略不同类,场景不同策略不同,环境策略分离组合)相关推荐
- 策略模式总结,适用场景,优缺点,代码示例
策略模式总结,适用场景,优缺点,代码示例 1.简介 1.1 继承带来的扩展和复用问题 1.2 进一步改进,利用接口 1.3 进一步改进,策略模式 2.适用场景 3.优点 4.缺点 5.代码示例 6.源 ...
- c语言支付方式,使用策略模式实现支付方式选择场景
为了加深对策略模式的理解,本节在来学习一个实例.相信小伙伴们都用过支付宝.微信支付.银联支付及京东白条,常见的应用场景就是大家在下单支付时会提示选择支付方式,如果没有选择支付方式,系统会用默认推荐的支 ...
- 策略模式Strategy Pattern应用场景
策略模式(Strategy Pattern)是指定义了算法家族.分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户. 策略模式的应用场景 1.假如系统中有很多类,而他们的 ...
- python策略模式包含角色_详解Python设计模式之策略模式
虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用.<设计模式:可复用面向对象软件的基础>一书中有 23 个模式,其中有 16 个在动态语言中"不见了,或者简 ...
- 策略模式、观察者模式、代理模式、装饰模式 应用场景和实现
有个大神写的很好: 参考:设计模式学习笔记(四:策略模式) 参考:设计模式学习笔记(二:观察者模式) 参考:设计模式学习笔记-代理模式 参考:设计模式--装饰者模式与代理模式(重要) 参考:设计模式- ...
- 【设计模式】策略模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
文章目录 一.策略模式简介 二.策略模式适用场景 三.策略模式优缺点 四.策略模式与其它设计模式 五.策略模式代码示例 1.促销策略接口 2.满减促销策略 3.返现促销策略 4.空促销策略 5.促销策 ...
- 设计模式学习笔记(二)工厂模式、模板模式和策略模式的混合使用
一.工厂模式(Factory pattern) 工厂模式又叫做工厂方法模式,是一种创建型设计模式,一般是在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型. 1.1 工厂模式介绍 工厂模式是 ...
- 拿捏大厂面试,设计模式学习笔记(二)工厂模式、模板模式和策略模式的混合使用
一.工厂模式 工厂模式又叫做工厂方法模式,是一种创建型设计模式,一般是在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型. 1.1 工厂模式介绍 工厂模式是Java 中比较常见的一种设计模式 ...
- 工厂模式和策略模式的综合使用
目录 一.简单的工厂模式了解与使用 (一)基本概念理解 (二)简单工厂模式的认识和对应角色的分析 基本认识 角色理解 (三)使用场景和典型应用 二.简单的策略模式了解与使用 (一)基本概念理解 (二) ...
- java 策略模式会员_七:策略模式(不同等级会员打折算法)
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化: 下面给出策略模式的类图,引自百度百科. 策略模式在LZ第一次接触到的时 ...
最新文章
- 为什么mac运行变慢,如何提升mac运行速度
- 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
- HDU2044 一只小蜜蜂…(简单递推)
- vs2012创建Windows服务
- C#——银行ATM程序DEMO
- java枚举使用详解
- mysql对结果限制_在查询中限制MySQL结果
- 自动驾驶车辆转向控制(通过支持转角控制的EPS实现角速度控制)
- Access日期、时间函数
- 文本视图(UITextView)占位符Swift
- C#操作十六进制数据以及十进制与十六进制互相转换
- Daily Scrum 10.23
- word排版教程-----------技巧
- Python及IPython安装使用
- 为什么程序员 996 会猝死,而老板 007 却不会?
- 带你深入了解 DNS 解析原理-递归与迭代
- 水和水蒸气物性计算微信小程序
- 验证苹果电子邮件地址服务器出现问题,iPhone之验证您的电子邮件地址问题解决...
- 钉钉机器人V1使用说明
- 数据分析常见SQL面试笔试题
热门文章
- python面向对象(2)——继承(4)
- vscode could not establish connection to linux The VS Code Server failed to start
- AppleScript 以管理员身份运行程序
- hibernate报错 net.sf.json.util.CycleDetectionStrategy$StrictionStrategyRepeatedReferenceAsObject
- c语言现代方法16章 基础、课后习题、基础等
- c++关联容器的容器操作(和顺序容器都支持的操作)详细解释,基础于c++primer 5th 表 9.2 (持续更新)
- c++11-decltype
- 关于优酷开放SDk之setOnAdCountListener和setOnNetworkSppedListener
- Servlet异常处理
- spring autoproxy by annotation