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

  • 相关阅读:
    ajax异步服务器获取时间
    JavaScript基本知识
    JavaScript使用button提交表单
    spring与hibernate整合
    Spring的事务属性
    注解方式实现Spring声明式事务管理
    svn的安装使用
    sbn
    恢复oracle中误删除drop掉的表
    ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes的解决办法
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7782673.html
Copyright © 2011-2022 走看看