资讯专栏INFORMATION COLUMN

设计模式——抽象工厂

KoreyLee / 319人阅读

摘要:简介抽象工厂是一种创建型模式,它提代一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。类图是声明了创建抽象产品的抽象工厂,是具体的工厂,实现了创建具体产品。

1. 简介

  抽象工厂是一种创建型模式,它提代一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂允许调用者使用抽象的接口创建一组相关的产口,而不需要关心它们具体的产品,这样就从具体的产口中解耦出来,依赖抽象而不是依赖具体类。

2. UML类图

  AbstractFactory是声明了创建抽象产品的抽象工厂,ConcreteFactory是具体的工厂,实现了创建具体产品。AbstractProduct是一类产品的抽象接口,Product是具体的产品。

3. 实例

抽象产品A

public interface AbstractProductA {
    void showProductA();
}

具体产品A

public class ProductA1 implements AbstractProductA {
    public void showProductA() {
        System.out.println("ProductA1");
    }
}

public class ProductA2 implements AbstractProductB {
    public void showProductA() {
        System.out.println("ProductA2");
    }
}

抽象产品B

public interface AbstractProductB {
    void showProductB();
}

具体产品B

public class ProductB1 implements AbstractProductB {
    public void showProductB() {
        System.out.println("ProductB1");
    }
}

public class ProductB2 implements AbstractProductB {
    public void showProductB() {
        System.out.println("ProductB2");
    }
}

抽象工厂

public interface AbstractFactory {
    AbstractProductA createProductA();
    AbstractProductB createProductB();
}

具体工厂

public class Factory1 implements AbstractFactory {
    public AbstractProductA createProductA() {
        return new ProductA1();
    }
    
    public AbstractProductB createProductB() {
        return new ProductB1();
    }
}

public class Factory2 implements AbstractFactory {
    public AbstractProductA createProductA() {
        return new ProductA2();
    }
    
    public AbstractProductB createProductB() {
        return new ProductB2();
    }
}

测试

public class Test {
    public static void main(String[] args) {
        AbstractFactory factory = new Factory1();
        AbstractProductA productA = factory.createProductA();
        productA.showProductA();
        
        AbstractProductB productB = factory.createProductB();
        productB.showProductB();
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76504.html

相关文章

  • JavaScript工厂模式

    摘要:基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。工厂方法模式之所以又被称为多态工厂模式,是因为所有的具体工厂类都具有同一抽象父类。工厂方法模式总结工厂方法模式是简单工厂模式的进一步抽象和推广。 JavaScript工厂模式 首先需要说一下工厂模式。工厂模式根据抽象程度的不同分为三种 简单工厂模式 工厂方法模式 抽象工厂模式 1.简单工厂模式 简单工厂模式:又称为静态工厂方法...

    oujie 评论0 收藏0
  • js常用设计模式实现(二)工厂模式抽象工厂模式

    摘要:抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。前边的两个都是直接生产实例的,开始以为抽象工厂也是但是后来发现抽象工厂更像是生产工厂,其实抽象工厂其实是实现子类继承父类的方法。 创建型模式 创建型模式是对一个类的实例化过程进行了抽象,把对象的创建和对象的使用进行了分离 上一篇介绍了下单例模式,这一篇介绍一下工厂模式和抽象工厂模式,...

    meteor199 评论0 收藏0
  • Java 设计模式 简单工厂 工厂模式 抽象工厂

    摘要:简单工厂,工厂模式和抽象工厂。不要认为简单工厂是用就觉得一无是处,也不要觉得抽象工厂比较高大上就到处套。 工厂模式,实际上也会根据业务情景不同会有不同的实现方式。一般分为3种。简单工厂,工厂模式和抽象工厂。顾名思义,这三种从简单到抽象,名称越来越高大上,实现方式肯定是越来越复杂 结论1:三种工厂的实现越来越复杂 简单工厂 public class Factory { // 定义...

    CocoaChina 评论0 收藏0
  • PHP高级特性-反射Reflection以及Factory工厂设计模式的结合使用[代码实例]

    摘要:反射提供给面向对象编程可以自省的能力,即反射。在简单工厂模式中,根据传递的参数来返回不同的类的实例简单工厂模式又称为静态工厂方法模式。也就是简单工厂模式工厂工厂类。PHP高级特性-反射以及工厂设计模式的结合使用 [结合 Laravel-Admin 代码实例讲解]利用反射来实现工厂模式的生产而无需创建特定的工厂类本文地址http://janrs.com/?p=833转载无需经过作者本人授权转载...

    番茄西红柿 评论0 收藏2637
  • PHP设计模式(三)抽象工厂模式(Abstract Factory)

    摘要:支持增加任意产品抽象工厂用来生产不同产品族的全部产品。对于增加新的产品,无能为力支持增加产品族参考系列源地址系列目录设计模式概述设计模式一简单工厂模式设计模式二工厂方法模式设计模式三抽象工厂模式设计模式四单例模式 一、什么是抽象工厂模式 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件: 系统中有多个产品族,而系统一次...

    W_BinaryTree 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<