当前位置:首页 > PHP教程 > php高级应用 > 列表

php策略模式简单示例分析【区别于工厂模式】

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-22 16:31:51 浏览: 评论:0 

本文实例讲述了php策略模式。分享给大家供大家参考,具体如下:

策略模式和工厂模式很像。

工厂模式:着眼于得到对象,并操作对象。

策略模式:着重得到对象某方法的运行结果。

示例:

  1. //实现一个简单的计算器 
  2. interface MathOp{ 
  3.   public function calculation($num1,$num2); 
  4. } 
  5. //加法 
  6. class MathAdd implements MathOp{ 
  7.   public function calculation($num1,$num2){ 
  8.     return $num1 + $num2; 
  9.   } 
  10. } 
  11. //减法 
  12. class MathSub implements MathOp{ 
  13.   public function calculation($num1,$num2){ 
  14.     return $num1 - $num2; 
  15.   } 
  16. } 
  17. //乘法 
  18. class MathMulti implements MathOp{ 
  19.   public function calculation($num1,$num2){ 
  20.     return $num1 * $num2; 
  21.   } 
  22. } 
  23. //除法 
  24. class MathDiv implements MathOp{ 
  25.   public function calculation($num1,$num2){ 
  26.     return $num1 / $num2; 
  27.   } 
  28. } 
  29. class Op{ 
  30.   protected $op_class = null; 
  31.   public function __construct($op_type){ 
  32.     $this->op_class = 'Math' . $op_type; 
  33.   } 
  34.   public function get_result($num1,$num2){ 
  35.     $cls = new $this->op_class; 
  36.     return $cls->calculation($num1,$num2); 
  37.   } 
  38. } 
  39. $obj = new Op('Add'); 
  40. echo $obj->get_result(6,2);//8 
  41. $obj = new Op('Sub'); 
  42. echo $obj->get_result(6,5);//1 
  43. $obj = new Op('Multi'); 
  44. echo $obj->get_result(6,2);//12 
  45. $obj = new Op('Div'); 
  46. echo $obj->get_result(6,2);//3

Tags: php策略模式 php工厂模式

分享到: