<?php
/**
* 2020-6-3 Xun
* strategy 策略模式(通过计算器说明)
* 在面向对象设计法则中有一个开闭原则:对修改封闭,对扩展开放
* 与工厂模式的区别为工厂模式一个入口返回一个对象让调用者使用,策略模式则是让调用者直接获取到想要的结果不需要触碰对象
*/
class Add{
public function suan($num1,$num2){
return $num1+$num2;
}
}
class Reduce{
public function suan($num1,$num2){
return $num1-$num2;
}
}
class Ride{
public function suan($num1,$num2){
return $num1*$num2;
}
}
class Except{
public function suan($num1,$num2){
return $num1/$num2;
}
}
//写一个父类单入口调用
class Suan{
public $calculate=null;
public function __construct($type)
{
$this->calculate=new $type;
}
public function calculate($num1,$num2){
//调用已经实例化的实例
return $this->calculate->suan($num1,$num2);
}
}
//实例化计算器
$obj=new Suan('Add');
echo $obj->calculate(5,9);
echo '<br/>';
$obj=new suan('Reduce');
echo $obj->calculate(5,9);
echo '<br/>';
$obj=new suan('Ride');
echo $obj->calculate(5,9);
echo '<br/>';
$obj=new suan('Except');
echo $obj->calculate(5,9);
echo '<br/>';
PHP设计模式之策略模式
最新推荐文章于 2020-06-07 14:24:32 发布