PHP设计模式之----简单工厂模式

定义个抽象的类(或接口),让子类去继承(实现)它
abstract class Operation
{
    abstract public function getValue($num1, $num2);
}
/**
 * 加法类
 */
class OperationAdd extends Operation
{
    public function getValue($num1, $num2)
    {
        return $num1 + $num2;
    }
}

/**
 * 减法类
 */
class OperationSub extends Operation
{
    public function getValue($num1, $num2)
    {
        return $num1 - $num2;
    }
}

/**
 * 乘法类
 */
class OperationMul extends Operation
{
    public function getValue($num1, $num2)
    {
        return $num1 * $num2;
    }
}

/**
 * 除法类
 */
class OperationDiv extends Operation
{
    public function getValue($num1, $num2)
    {
        return $num1 / $num2;
    }
}
通过采用面向对象的继承特性,我们可以很容易就能对原有程序进行扩展,比如:‘乘方’,‘开方’,‘对数’,‘三角函数’,‘统计’等,以还可以避免加载没有必要的代码。
如果我们现在需要增加一个求余的类,会非常的简单。

我们只需要另外写一个类(该类继承虚拟基类),在类中完成相应的功能(比如:求乘方的运算),而且大大的降低了耦合度,方便日后的维护及扩展。
使用一个单独的类来实现实例化的过程,这个类就是工厂:
class Factory
{
    public static function createObj($operate)
    {
        switch ($operate){
            case '+':return new OperationAdd();break;
            case '-':return new OperationSub();break;
            case '*':return new OperationMul();break;
            case '/':return new OperationDiv();break;
            case '%':return new OperationRem();break;
        }
    }
}

$obj = Factory::createObj('%');
$v = $obj->getValue(3,2);
print_r($v);

 

 
posted @ 2018-12-18 18:26  佛系-Coder  阅读(215)  评论(0编辑  收藏  举报