<?php
header("Content-type: text/html; charset=UTF-8");
/**
* 策略模式的好处就是:体现了高内聚低耦合的特性
*/

/**
* 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口
*/
interface IStrategy{
    //每个锦囊妙计都是一个可执行的算法
    public function operate();
}

/**
* 找乔国老帮忙,使孙权不能杀刘备
*/
class BackDoor implements IStrategy {
    
    public function operate(){
        echo "找乔国老帮忙,让吴国太给孙权施加压力";
    }
}

/**
* 求吴国太开个绿灯
*/
class GivenGreenLight implements IStrategy{
    
    public function operate(){
        echo "求吴国太开个绿灯,放行!";
    }
}

/**
* 孙夫人断后,挡住追兵
*/
class BlockEnemy implements IStrategy {
    
    public function operate(){
        echo "孙夫人断后,挡住追兵";
    }
}

/**
* 计谋有了,那还要有锦囊
*/
class Context {
    private $straegy = NULL;
    
    //构造函数,你要使用那个妙计
    public function __construct(IStrategy $strategy){
        $this->straegy = $strategy;
    }
    
    //使用计谋了,看我出招了
    public function operate(){
        $this->straegy->operate();
    }
}

/**
* 然后就是赵云雄赳赳的揣着三个锦囊,拉着已步入老年行列的、还想着娶纯情少女的、色迷迷的刘老爷子去入赘了,嗨,还别说,小亮的三个妙计还真是不错,瞅瞅:
*/
class ZhaoYun{
    
    /**
     * 赵云出场了,他根据诸葛亮给他的交代,依次拆开妙计
     */
    public function __construct(){
        $context = null;
        
        //刚刚到吴国的时候拆第一个
        echo ("-----------刚刚到吴国的时候拆第一个-------------<br>");
        $context = new Context(new BackDoor()); //拿到妙计
        $context->operate(); //拆开执行
        echo "<br><br><br><br><br>";
        
        
        //刘备乐不思蜀了,拆第二个了
        echo ("-----------刘备乐不思蜀了,拆第二个了-------------<br>");
        $context = new Context(new GivenGreenLight());
        $context->operate(); //执行了第二个锦囊了
        echo "<br><br><br><br><br>";
        
        
        //孙权的小兵追了,咋办?拆第三个
        echo ("-----------孙权的小兵追了,咋办?拆第三个-------------<br>");
        $context = new Context(new BlockEnemy());
        $context->operate(); //孙夫人退兵
        echo "<br><br><br><br><br>";
    }
}

new ZhaoYun();

运行结果如下:

-----------刚刚到吴国的时候拆第一个-------------
找乔国老帮忙,让吴国太给孙权施加压力

-----------刘备乐不思蜀了,拆第二个了-------------
求吴国太开个绿灯,放行!

-----------孙权的小兵追了,咋办?拆第三个-------------
孙夫人断后,挡住追兵

第 1 章 策略模式相关推荐

  1. 第 25 章 策略模式

    第 25 章 策略模式 1.编写鸭子项目 编写鸭子项目,具体要求如下: 有各种鸭子(比如野鸭.北京鸭.水鸭等, 鸭子有各种行为,比如叫.飞行等) 显示鸭子的信息 2.传统方案解决鸭子问题 传统方案解决 ...

  2. 第1章 策略模式【StrategyPattern】

    刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子的. 先说这个场景 ...

  3. 大话设计模式 第二章 策略模式购物车价格查询

    策略模式定义 定义一系列功能 把它们一个个封装起来 并使它们可以相互替换 提供统一的入口访问包装的功能 问题 添加商品和优惠券到购物车后查询价格 思考 要想获取购物车的支付价格 需要经过所有的优惠券优 ...

  4. 【Head First 模式设计】第1章 策略模式

    Intro to Design Patterns Welcome to Design Patterns SimUDuck应用程序 一个模拟鸭子游戏:SimUDuck.游戏中会出现各种鸭子,一边游泳,一 ...

  5. 大话设计模式之爱你一万年:第十三章 行为型模式:策略模式:女友在手,说走就走:2.策略模式之出行旅游

    要出行旅游,那么出行方式有--飞机.自驾游.火车.自行车等,这几种方式就是策略.我自己就不喜欢做攻略和计划,幸亏有我的女朋友. 一.策略模式之出行旅游 1.1 分析 对于出行方式可以抽象出来Vehic ...

  6. 大话设计模式之爱你一万年:第十三章 行为型模式:策略模式:女友在手,说走就走:3.策略模式之三国刘备江东娶夫人

    这一节我们在通过一个三国之刘备江东娶夫人的例子来对策略模式有一个更深的理解. 一.策略模式之三国刘备江东娶夫人 1.1 故事背景 刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天 ...

  7. python打折简单程序每满_[Python设计模式] 第2章 商场收银软件——策略模式

    题目 设计一个控制台程序, 模拟商场收银软件,根据客户购买商品的单价和数量,计算总价. 基础版本 price = float(input("输入商品单价:")) number = ...

  8. 《Head First设计模式》读书笔记 -- (第一章)策略模式

    本文属贫僧不吃肉原创,欢迎转载,转载请注明来自 http://never-say-never.iteye.com/blog/851923 在开始之前,先熟悉一下OO设计的一些原则. OO设计原则之一: ...

  9. 大话设计模式——第二章:商场促销策略模式

    文章目录 前言 一.代码1.0 1.1. 代码 2.2. 存在的问题 二.代码1.1 增加打折 2.1. 代码 2.2. 存在的问题 三.代码2.0 使用简单工厂写打折类和返利类 3.1. 代码 3. ...

最新文章

  1. 聊天机器人之语料准备
  2. JAVA 将图片转换为Base64编码
  3. JS创建对象学习笔记
  4. 二、1、怎么做都好做,没flag就抓包
  5. android物联网开发技术架构,Android 相关七种 CPU 架构适配,android七种
  6. jdk8 list转Map
  7. 切换dns批处理模板
  8. 数据结构与算法--3.字符串的旋转
  9. 基于python的分类模型_python SVM 线性分类模型的实现
  10. 为什么我不推荐敏捷开发?
  11. Electron使用时拦截HTTP请求的解决方案
  12. 计算机科学与技术专业职业素养,商丘工学院计算机科学与技术专业
  13. kotlin枚举_Kotlin枚举班
  14. KNN--K近邻算法
  15. []TLD code run
  16. 如何制做计算机病毒,电脑病毒制作-怎么制作电脑病毒请教高手,怎么做病毒? – 手机爱问...
  17. 计算机相关的oa资源,计算机类OA期刊搜集与分析.pdf
  18. Zabbix自动发现和自动注册
  19. 【​观察】解读微软物联网新价值观 三位一体释放“云+端”能量
  20. Unity加载倾斜摄影模型/激光点云,开源

热门文章

  1. 【JavaScript 逆向】521 加速乐多层响应 Cookie 逆向
  2. 乌洛波洛斯衔尾蛇的反思
  3. 钢琴模拟软件弹奏音乐
  4. DEA实用插件之Key Permoter X——辅助记忆快捷键
  5. 上升百分之五计算机公式,如何简单计算同期上升下降的百分比?
  6. 完美使用Word的小技巧
  7. 同惠LCR测试仪TH2829产品技术参数
  8. [展览人周刊]华展云20170717期
  9. [展览人周刊]华展云20170626期
  10. IBM 认证 SOA 解决方案设计师认证考试准备,第 1 部分: SOA 最佳实践