zoukankan      html  css  js  c++  java
  • PHP抽象工场模式

    /**
     * Interface AbstractFactory 抽象工场模式
     */
    //抽象工场
    interface AbstractFactory{
        //创建等级结构工场方法
        public function createProductA();
        public function createProductB();
    }
    
    //具体工场1
    class ConcreteFactory1 implements AbstractFactory {
        public function createProductA()
        {
            // TODO: Implement createProductA() method.
            return new ProductA1();
        }
        public function createProductB()
        {
            // TODO: Implement createProductB() method.
            return new ProductB1();
        }
    }
    
    //具体工场2
    
    class ConcreteFactory2 implements AbstractFactory {
        public function createProductA()
        {
            // TODO: Implement createProductA() method.
            return new ProductA2();
        }
        public function createProductB()
        {
            // TODO: Implement createProductB() method.
            return new ProductB2();
        }
    }
    
    //抽象产品A
    interface AbstractProductA{
        public function price();
    }
    //抽象产品B
    interface AbstractProductB{
        public function price();
    }
    
    
    //具体产品A1
    class ProductA1 implements AbstractProductA{
        public function price()
        {
            // TODO: Implement price() method.
            echo 'ProductA1 价格';
        }
    }
    
    //具体产品A2
    class ProductA2 implements AbstractProductA{
        public function price()
        {
            // TODO: Implement price() method.
            echo 'ProductA2 价格';
        }
    }
    
    //具体产品B1
    class ProductB1 implements AbstractProductB{
        public function price()
        {
            // TODO: Implement price() method.
            echo 'ProductB1 价格';
        }
    }
    
    //具体产品B1
    class ProductB2 implements AbstractProductB{
        public function price()
        {
            // TODO: Implement price() method.
            echo 'ProductB2 价格';
        }
    }
    
    class Client {
        public static function main() {
            self::run(new ConcreteFactory1());
            self::run(new ConcreteFactory2());
        }
    
        public static function run(AbstractFactory $factory) {
            $productA = $factory->createProductA();
            $productB = $factory->createProductB();
            echo $productA->price(),PHP_EOL;
            echo $productB->price(),PHP_EOL;
        }
    }
    
    Client::main();
    
  • 相关阅读:
    shell 自动登录 上传 下载
    用例设计----PICT&Allpairs
    已有实例 Oracle 下新增实例
    【原创】安卓兼容性测试
    【原创】某版本性能测试
    【原创】Jmeter正则表达式提取json中多个关联值
    【转】四种常见的 POST 提交数据方式
    rfw使用接口库测试--FAIL : UnicodeEncodeError: 'ascii' codec can't encode characters in position
    【原创】Robotframework 简介
    java学习笔记_内存分析
  • 原文地址:https://www.cnblogs.com/whel0923/p/15030617.html
Copyright © 2011-2022 走看看