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

  • 相关阅读:
    论JS函数传参时:值传递与引用传递的区别
    关于 rem
    致——自己
    用CSS3写的钟表
    HTML标签marquee实现滚动效果
    手机号截取
    CSS3绘制环形进度条
    限制内容长度(CSS,jQuery)
    移动web开发中遇到的一些问题收纳
    移动平台中 meta 标签的使用
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7782673.html
Copyright © 2011-2022 走看看