zoukankan      html  css  js  c++  java
  • CenterFactory

    <?php
    /* 实例3 */
    /* 抽象工厂 */
    //青铜会员的打折商品
    class BronzeRebateCommodity {
        //描述
        public $desc = '青铜会员的打折商品';
    }
    //白银会员的打折商品
    class SilverRebateCommodity {
        
        public $desc = '白银会员的打折商品';
    }
    //青铜会员的推荐商品
    class BronzeCommendatoryCommodity {
        public $desc = '青铜会员的推荐商品';
    }
    //白银会员的推荐商品
    class SilverCommendatoryCommodity {
        public $desc = '白银会员的推荐商品';
        
    }
    //各个工厂的接口
    interface ConcreteFactory {
        //生产对象的方法
        public function create($what);
    }
    //青铜工厂
    class BronzeFactory implements ConcreteFactory {
        //生产对象的方法
        public function create($what){
            $productName = 'Bronze'.$what.'Commodity';
            return new $productName;
        }
    }
    //白银工厂
    class SilverFactory implements ConcreteFactory {
        //生产对象的方法
        public function create($what){
            $productName = 'Silver'.$what.'Commodity';
            return new $productName;
        }
    }
    //调度中心
    class CenterFactory {
        //获取工厂的方法
        public function getFactory($what) {
            $factoryName = $what.'Factory';
            return new $factoryName;
        }
        
        //获取工厂的静态方法
        public static function getFactory2($what) {
            $factoryName = $what.'Factory';
            return new $factoryName;
        }
    }
     
    //实例化调度中心
    $center  = new CenterFactory();
    //获得一个白银工厂
    $factory = $center->getFactory('Silver');
    //让白银工厂制造一个推荐商品
    $product = $factory->create('Commendatory');
    //得到白银会员的推荐商品
    echo $product->desc.'<br>';
    //获得一个青铜工厂
    $factory2 = CenterFactory::getFactory2('Bronze');
    //让青铜工厂制造一个打折商品
    $product2 = $factory2->create('Rebate');
    //得到青铜会员的推荐商品
    echo $product2->desc;
  • 相关阅读:
    uni-app实现下拉效果
    求点到已知直线的距离和点到直线的垂点坐标
    Mybatis 自定义SqlSessionFactoryBean扫描通配符typeAliasesPackage
    前端string类型的日期 -后端实体类属性为Date
    如何更新npm为最新版本
    简述ThreadPoolExecutor的运行机制
    list在遍历过程中的add/remove
    Linux下安装mysql
    Linux下安装activeMQ并设置开机启动
    solr集群环境搭建
  • 原文地址:https://www.cnblogs.com/yhdsir/p/4649233.html
Copyright © 2011-2022 走看看