首页 > Web开发 > 详细

PHP设计模式之:工厂模式

时间:2014-03-15 03:08:29      阅读:574      评论:0      收藏:0      [点我收藏+]

<?php
abstract class Operation
{
    public numA = 0;
    public numB = 0;

    public function __construct($numA, $numB)
    {
        $this->numA = $numA;
        $this->numB = $numB;
    }
    abstract function getResult();
}

class OperationAdd extends Operation
{
    public function getResult()
    {
        return numA+numB;
    }
}

class OperationSub extends Operation
{
    public function getResult()
    {
        return numA - numB;
    }
}

class OperationMul extends Operation
{
    public function getResult()
    {
        return numA * numB;
    }
}

class OperationDiv extends Operation
{
    public function getResult()
    {
        if(numB == 0)
        {
            throw new Exception("除数不能为 0 。");
        }
        return (double) (numA / numB);
    }
}

/** *************************************** */
// 简单运算工厂类
class OperationFactory
{
    public static createOperate($operation, $numA, $numB)
    {
        switch($operation)
        {
            case ‘+‘:
                $oper = new OperationAdd($numA, $numB);
                break;
            case ‘-‘:
                $oper = new OperationSub($numA, $numB);
                break;
            case ‘*‘:
                $oper = new OperationMul($numA, $numB);
                break;
            case ‘/‘:
                $oper = new OperationDiv($numA, $numB);
                break;
        }
        return $oper;
    }

}

/** ************************ */
// 调用方式
$numA = 100;
$numB = 8;
$operation = ‘+‘;
$oper = OperationFactory::createOperate($operation, $numA, $numB);
echo $oper.getResult();

bubuko.com,布布扣

PHP设计模式之:工厂模式,布布扣,bubuko.com

PHP设计模式之:工厂模式

原文:http://www.cnblogs.com/lin3615/p/3601322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!