第 1 章 策略模式
来源:互联网 发布:java jdk 1.7.0 64位 编辑:程序博客网 时间:2024/06/02 05:08
<?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>";
}
}
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();
运行结果如下:
-----------刚刚到吴国的时候拆第一个-------------
找乔国老帮忙,让吴国太给孙权施加压力
-----------刘备乐不思蜀了,拆第二个了-------------
求吴国太开个绿灯,放行!
-----------孙权的小兵追了,咋办?拆第三个-------------
孙夫人断后,挡住追兵
0 0
- 第 1 章 策略模式
- 第 1 章 策略模式【Strategy Pattern】
- 第 1 章 策略模式【Strategy Pattern】
- 第1章 策略模式【StrategyPattern】
- 第2章 策略模式
- 《HeadFirst设计模式》读书笔记-第1章-策略模式
- 第2章 商场促销----策略模式
- 第9章(2) 策略设计模式
- 第二话-策略模式
- 大话设计模式C++实现-第2章-策略模式
- 设计模式第一天 策略模式
- 第23讲:Strategy 策略模式
- 《大话设计模式》之--第2章 商场促销----策略模式
- 《设计模式解析》 第14章 设计模式的原则与策略 复习题
- Head First_设计模式_学习笔记_第01章_策略模式
- 《大话设计模式》之--第2章 商场促销----策略模式
- 4.2 《硬啃设计模式》 第19章 设计你的战士 - 策略模式(Strategy Pattern)
- 《Android源码设计模式》读书笔记 (7) 第7章 策略模式
- Java用split函数进行分割字符串
- DbConnection.java实现简单的MySQL数据库连接
- 13周 acm 2 复数
- C++ STL lower_bound upper_bound的用法以及cmp函数
- fast tcp
- 第 1 章 策略模式
- Scrum中PB与SB的区别
- 13周 acm 3
- django开发版WEB服务器 不响应或Socket报错
- StringBuffer和StringBuilder的区别
- 使用thrift做c++,java和python的相互调用
- Android中JNI编程详解
- 排序算法,选择,插入,冒泡,希尔,归并
- 包装类DataOutputStream、DataInputStream的常见用法