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();
    
  • 相关阅读:
    thread.md
    Linux系统编程手册_第6章_进程
    第一章.md
    开始.md
    粘滞位
    端口转发和端口映射
    virtualbox.md
    第6章.md
    JsparentNode、parentElement,childNodes、children 它们有什么区别呢?
    Sql注入防小试
  • 原文地址:https://www.cnblogs.com/whel0923/p/15030617.html
Copyright © 2011-2022 走看看