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

  • 相关阅读:
    挂断电话——黑名单拦截
    上传文件 服务端模拟存储
    短信监听+短信拦截
    c#常用控件缩写(装)
    20121016学习笔记四
    c#日期时间格式化
    FTP服务器配置以及访问
    关于远程桌面设置和连接
    20121016学习笔记三
    电脑开机应用程序自动启动设置
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7782673.html
Copyright © 2011-2022 走看看