php 工厂模式

php 工厂模式

 
主要讲的是简单工程模式。
 
场景:写一个简单计算器
 
普通写法:
<?php
 
 class  Calculate{
  function getResult($inputA,$inputB,$symbol){
    switch($symbol){
      case “+”:
      $result=$inputA+$inputB;
      break;
      case “-“;
      $result=$inputA-$inputB;
      break;
      default:
      $result=“”;
      break;
      }
    }
 
    }
 
//客户端代码
 
$calculate=new Calculate();
$calculate->getResult(1,2,”+”);
 
 
从上面的例子看并没有什么毛病。但是有一天需求改了,要求这个计算器能计算乘法,除法,直接加swtich分支能解决,突然有一天需求在改了,求根,更复杂的算数的时候呢?
 
 
工厂模式按照我的理解,就是提供一群类的集合,比如加法就进入加法类运算,减法进入减法类运算。
 
 
简单工程模式实现:
 
   Abstract class symbol{
    Abstract function getResult();
  }
 
//加法类
class jiafa extend symbol{
    function getResult{
    //加法运算
  }
}
 
//减法类
class jianfa extend symbol{
  function getResult{
  // 减法运算
  }
}
//乘法类
class  chengfa  extend symbol{
  function getResult{
  //乘法运算
  }
}
 
//工厂类
class factory{
  function calculate($params){
    switch($params){
    case “+”:
    $operate=new jiafa();
    $operate->getResult;
    break;
    case “-“:
    $operate=new jianfa();
     $operate->getResult;
     break;
    ...
  }
  }
 
}
 
从上面的代码上,工厂虽然还存在switch分支,但是把更复杂的东西交给了加法类等去完成,而不去关注实现过程。
 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。