zoukankan      html  css  js  c++  java
  • php简单工厂模式

    工厂类中有一个创建对象的方法,根据传入参数的不同来生成不同的对象
    class Operation extends Model
    {

    private $numberA;
    private $numberB;


    public function getResult(){

    $result = 0;

    return $result;

    }

    public function getNumberA(){

    return $this->numberA;
    }
    public function setNumberA($numberA){

    $this->numberA = $numberA;

    }

    public function getNumberB(){

    return $this->numberB;
    }
    public function setNumberB($numberB){

    $this->numberB = $numberB;

    }




    }


    class OperationAdd extends Operation
    {

    public function getResult()
    {
    $result = 0 ;

    $result = $this->numberA + $this->numberB;

    return $result;


    }

    }


    class OperationSub extends Operation
    {

    public function getResult()
    {
    $result = 0;

    $result = $this->numberA - $this->numberB;

    return $result;
    }

    }

    class OperationMul extends  Operation
    {
    public function getResult(){

    $result = 0;

    $result = $this->numberA * $this->numberB;

    return $result;

    }

    }


    class OperationDiv extends Operation
    {
    public  function  getResult(){

    $result = 0;
    if ($this->numberA == 0){

    throw new HttpException("除数不能为0");
    }

    $result = $this->numberA / $this->numberB;

    return $result;
    }

    }



    class Factory extends Model
    {

    private $type;

    public function __construct($type,array $config = [])
    {
    $this->type = $type;
    parent::__construct($config);
    }

    public function createOperate(){

    switch ($this->type){
    case "+":

    return new OperationAdd();

    break;

    case "-":

    return new OperationSub();

    break;

    case "*":

    return new OperationMul();
    break;

    case "/":

    return new OperationDiv();
    break;

    }

    }

    }


    $factory  = new Factory("+");

    $operation = $factory->createOperate();

    $operation->numberA = 2;

    $operation->numberB = 1;

    $result = $operation->getResult();

    echo $result;
  • 相关阅读:
    【BZOJ4517】排列计数(排列组合)
    【BZOJ2733】永无乡(线段树,启发式合并)
    【BZOJ1237】配对(贪心,DP)
    【BZOJ1492】货币兑换Cash(CDQ分治)
    CDQ分治模板
    【BZOJ3932】任务查询系统(主席树)
    【BZOJ3295】动态逆序对(BIT套动态加点线段树)
    【BZOJ3626】LCA(树上差分,树链剖分)
    图书管理系统
    树集合,树映射
  • 原文地址:https://www.cnblogs.com/paulversion/p/8418267.html
Copyright © 2011-2022 走看看