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:与工厂方法相比,抽象工厂的接口中包含了所有产品的创建.

  • 相关阅读:
    spring 实现测试解耦
    Java 反射实例 (二)
    Java 反射实例
    Thread.join()
    缓存输入/输出流
    文件的拷贝
    将键盘输入的数据保存到文件中:OutputStream
    InputStream中read方法各个参数的意义
    OutputStream
    InputStream中的主要的子类
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7782673.html
Copyright © 2011-2022 走看看