zoukankan      html  css  js  c++  java
  • AbstractFactory(抽象工厂模式)

    AbstractFactory(抽象工厂模式)

      有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象

    <?php
     
    class Config {
        public static $factory = 1;
    }
     
    interface Product {
        public function getName();
    }
     
    abstract class AbstractFactory {
     
        public static function getFactory() {
            switch (Config::$factory) {
                case 1:
                    return new FirstFactory();
                case 2:
                    return new SecondFactory();
            }
            throw new Exception('Bad config');
        }
     
        abstract public function getProduct();
    }
     
    class FirstFactory extends AbstractFactory {
        public function getProduct() {
            return new FirstProduct();
        }
    }
    class FirstProduct implements Product {
        public function getName() {
            return 'The product from the first factory';
        }
    }
     
    class SecondFactory extends AbstractFactory {
        public function getProduct() {
            return new SecondProduct();
        }
    }
    class SecondProduct implements Product {
        public function getName() {
            return 'The product from second factory';
        }
    }
     
    $firstProduct = AbstractFactory::getFactory()->getProduct();
    Config::$factory = 2;
    $secondProduct = AbstractFactory::getFactory()->getProduct();
     
    print_r($firstProduct->getName());
    // The first product from the first factory
    print_r($secondProduct->getName());
    // Second product from second factory
    

      

  • 相关阅读:
    CSS布局设计
    Gulp自动化构建工具的简单使用
    雅虎前端优化的35条军规
    CSS预编译器less简单用法
    java 数据相除
    idea 配置文件中文显示问题
    postgresql 表触发器
    postgresql 自定义函数
    postgresql 自定义聚合函数
    CentOS 6.5 yum安装mysql5.6或其他版本【默认yum只能安装mysql 5.1】 by jason
  • 原文地址:https://www.cnblogs.com/Czc963239044/p/7115773.html
Copyright © 2011-2022 走看看