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();
    
  • 相关阅读:
    redis增加移除节点
    MYSQL管理工具phpMyAdmin安装,nginx动态页面转php-fpm端口
    配置PHP支持MYSQL
    后台运行linux命令,杀死僵尸进程
    linux教程,shell教程,nginx,mysql安装教程
    KMS服务器的搭建
    docker基本操作,Dockerfile , 自定义仓库
    IntelliJ IDEA中Java的Getter/Setter方法的自动生成
    Java定义一个标准的类
    Java构造方法
  • 原文地址:https://www.cnblogs.com/whel0923/p/15030617.html
Copyright © 2011-2022 走看看