zoukankan      html  css  js  c++  java
  • 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);
     
  • 相关阅读:
    面试精选:链表问题集锦
    经典排序算法总结与实现 ---python
    Python高级编程–正则表达式(习题)
    Python面试题汇总
    Python正则表达式
    Linux下的Libsvm使用历程录
    在 linux(ubuntu) 下 安装 LibSVM
    过拟合
    百度历年笔试面试150题
    MATLAB 的数据类型
  • 原文地址:https://www.cnblogs.com/jxl1996/p/10138941.html
Copyright © 2011-2022 走看看