策略模式:
定义一个各种功能的逻辑算法,并将每一个逻辑算法封装起来。
特点:
抽象策略角色: 策略类,通常由一个接口或者抽象类实现。
具体策略角色:包装了相关的算法和行为。
环境角色:持有一个策略类的引用,最终给客户端调用。
应用场景:
主要是封装多个功能的算法,就可以用策略模式实现
/*定义抽象类*/
abstract class open {
public abstract function method($val1, $val2);
}
/*加法类*/
Class Operate_Add extends open {
public function method($val1, $val2) {
return $val1 + $val2;
}
}
/*减法类*/
Class Operate_Sub extends open {
public function method($val1, $val2) {
return $val1 - $val2;
}
}
/*概括类*/
Class Context {
private static $op;
public static function container($operate) {
Switch($operate) {
Case '+': self::$op = new Operate_Add;
break;
Case '-': self::$op = new Operate_Sub;
break;
}
}
public function get_value($val1, $val2) {
echo self::$op->method($val1, $val2);
}
}
$mys = new Context();
$mys->container('+');
$mys->get_value(1, 2);