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;
  • 相关阅读:
    二分查找总结
    多线程之Timer和TimerTask
    多线程之线程间协作的两种方式:wait、notify、notifyAll和Condition
    java多线程之Callable、Future和FutureTask
    多线程之CountDownLatch、CyclicBarrier和Semaphore
    多线程之线程池的使用
    多线程之阻塞队列
    Transient关键字的使用
    多线程并发容器CopyOnWriteArrayList
    AtomicInteger学习
  • 原文地址:https://www.cnblogs.com/paulversion/p/8418267.html
Copyright © 2011-2022 走看看