zoukankan      html  css  js  c++  java
  • C2:抽象工厂 Abstract Factory

    提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.

    应用场景:

    一系列相互依赖的对象有不同的具体实现。提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合

    UML:

    代码示例:

    abstract class AbstractProductA
    {
    }
    
    abstract class AbstractProductB
    {
    }
    
    class ProductA1 extends AbstractProductA
    {
    
    }
    
    class ProductA2 extends AbstractProductA
    {
    
    }
    
    class ProductB1 extends AbstractProductB
    {
    
    }
    
    class ProductB2 extends AbstractProductB
    {
    
    }
    
    abstract class AbstractFactory
    {
        abstract public function createProductA();
        abstract public function createProductB();
    }
    
    class ConcreateFactory1 extends AbstractFactory
    {
        public function createProductA()
        {
            return new ProductA1();
        }
    
        public function createProductB()
        {
            return new ProductB1();
        }
    
    }
    
    class ConcreateFactory2 extends AbstractFactory
    {
        public function createProductA()
        {
            return new ProductA2();
        }
    
        public function createProductB()
        {
            return new ProductB2();
        }
    }
    
    // 调用
    $factory1 = new ConcreateFactory1();
    $factory1->createProductA();
    

      

    ps:与工厂方法相比,抽象工厂的接口中包含了所有产品的创建.

  • 相关阅读:
    JavaScript函数式编程——柯里化
    JavaScript使用纯函数避免bug
    ES6入门五:箭头函数、函数与ES6新语法
    图解--二分查找树
    电梯引发的思考
    VIM
    vs 2017
    多线程系列(四):Task
    多线程系列(三):线程池基础
    Docker for windows : 安装Redis
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7782673.html
Copyright © 2011-2022 走看看