策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。

介绍

策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。

策略模式的三个角色:

1、抽象策略角色

2、具体策略角色

3、环境角色(对抽象策略角色的引用)

实现步骤

1、定义抽象角色类(定义好各个实现的共同抽象方法)

2、定义具体策略类(具体实现父类的共同方法)

3、定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法)

实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
abstract class baseAgent { //抽象策略类
abstract function PrintPage();
}
//用于客户端是IE时调用的类(环境角色)
class ieAgent extends baseAgent {
function PrintPage() {
return 'IE';
}
}
//用于客户端不是IE时调用的类(环境角色)
class otherAgent extends baseAgent {
function PrintPage() {
return 'not IE';
}
}
class Browser { //具体策略角色
public function call($object) {
return $object->PrintPage ();
}
}
$bro = new Browser ();
echo $bro->call ( new ieAgent () );
?>