php 工厂方法模式

高洛峰
发布: 2023-03-03 15:18:02
原创
1423 人浏览过

php 工厂方法模式

<?php  
    /** 
     * 工厂方法模式,定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。 
     *  
     * 包含的对象 
     * 1,抽象产品 
     * 2,具体产品 
     * 3,抽象工厂 
     * 4,具体工厂 
     * 
     * 将简单工厂模式的工厂类进行抽象化,避免扩展时需要修改简单工厂模式中的工厂类。方便扩展、维护。 
     **/  
  
    /** 
     * 运算类 
     **/  
    abstract class Operation  
    {  
        abstract public function getValue($num1,$num2);  
    }  
  
    /** 
     * 加法类 
     **/  
    class OperationPlus 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) {  
            try {  
                if ( $num2 == 0 ) {  
                    throw new Exception(&#39;除数不能为0!&#39;);  
                } else {  
                    return $num1/$num2;  
                }  
            } catch (Exception $e) {  
                echo $e->getMessage();  
            }  
        }  
    }  
  
    /** 
     * 抽象工厂类 
     **/  
    abstract class Factory  
    {  
        public abstract function getOperation();  
    }  
  
    /** 
     * 加法工厂 
     **/  
    class FactoryPlus extends Factory  
    {  
        public function getOperation() {  
            return new OperationPlus();  
        }  
    }  
  
    /** 
     * 加法工厂 
     **/  
    class FactorySub extends Factory  
    {  
        public function getOperation() {  
            return new OperationSub();  
        }  
    }  
  
    /** 
     * 加法工厂 
     **/  
    class FactoryMul extends Factory  
    {  
        public function getOperation() {  
            return new OperationMul();  
        }  
    }  
  
    /** 
     * 加法工厂 
     **/  
    class FactoryDiv extends Factory  
    {  
        public function getOperation() {  
            return new OperationDiv();  
        }  
    }  
  
    // 加法  
    $factory = new FactoryPlus();  
    $operation = $factory->getOperation();  
    echo $operation->getValue(10,11);  
  
    // 减法  
    $factory = new FactorySub();  
    $operation = $factory->getOperation();  
    echo $operation->getValue(10,11);  
  
    // 除法  
    $factory = new FactoryDiv();  
    $operation = $factory->getOperation();  
    echo $operation->getValue(10,2);  
?>
登录后复制


更多php 工厂方法模式相关文章请关注PHP中文网!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!