抽象工厂模式:创建高效强大的对象家族

这篇具有很好参考价值的文章主要介绍了抽象工厂模式:创建高效强大的对象家族。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,欢迎来到程序视点!今天要分享的是工厂模式的最后一种模式:抽象工厂模式

抽象工厂模式:创建高效强大的对象家族

前言

在上一篇文章:设计模式之工厂方法模式 最后,我们通过示例展示了两个问题。归纳起来就是:

  • 每次增加一个产品时,都需要增加一个具体类和一个对象实现工厂。

随着产品类的增多,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。

  • 对于某些可以形成产品族(一组产品)的情况处理比较复杂

由于工厂方法模式中,一个具体工厂类只生产一类具体的对象,导致相关的产品系列之间在组装匹配的时候出现问题。

当我们考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产时,就形成了抽象工厂模式的基本思想。

抽象工厂模式:创建高效强大的对象家族

抽象工厂模式简介

抽象工厂模式,就是为了创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

这“一组相关或相互依赖的对象”来自不同的接口或抽象类。而这个抽象工厂要提供这些不同接口或抽象类的实例对象。

一个工厂提供多个实例对象,且这些实例间相互关联或相互依赖

抽象工厂模式,可以看做是工厂方法模式的升级版,从生产一个产品,到生产一系列的产品。

来看看抽象工厂模式包含的几个角色:

  • 产品族抽象工厂:用来声明生成抽象产品的方法。
  • 产品族工厂:专门生产一组相关的具体产品的工厂类。
  • 产品抽象类:工厂类能创建出来的所有产品类的抽象。它负责描述所有实例所共有的公共接口。(这里必须要一个抽象类,不然不能保证返回的不同的产品类属于同一个类型)
  • 产品类:工厂类创建出来的目标。它(们)是产品抽象类的具体实现。

示例

现在我们来修改之前“手机和电脑配对”的代码。

先来看下抽象工厂

public interface SameBrandFactory {
  public Phone createPhone();
  public Computer createComputer();
}

接着是工厂实现类:

华为品牌的工厂类:

public HuaweiFactory implements SameBrandFactory {
  public Phone createPhone() {
    return new HuaweiPhone();
  }
  
  public Computer createComputer() {
    return new HuaweiComputer();
  }
}

苹果品牌的工厂类:

public AppleFactory implements SameBrandFactory {
  public Phone createPhone() {
    return new ApplePhone();
  }
  
  public Computer createComputer() {
    return new AppleComputer();
  }
}

现在我们来测试下:

public class Test {
  public static void main(String[] args) {
    HuaweiFactory huaweiFactory = new HuaweiFactory();
    Phone phone1 = huaweiFactory.createPhone();
    Computer computer1 = huaweiFactory.createComputer();
    
    // 匹配
    match(phone1, computer1);
    
    AppleFactory appleFactory = new AppleFactory();
    Phone phone2 = appleFactory.createPhone();
    Computer computer2 = appleFactory.createComputer();
    
    // 匹配
    match(phone2, computer2);
  }
  
  public static void match(Phone p, Computer c) {
   System.out.println(p.info() + "===" + c.getName()) 
  }
}

输出:

我是华为手机===我是华为电脑

我是苹果手机===我是苹果电脑

看见了吗?同一个工厂出来的手机和电脑一定是匹配的!

抽象工厂模式总结

抽象工厂模式只有在新增一个类型的具体产品时才需要新增工厂实现类。它可以创建属于一类类型的多种具体产品。

当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。同时,使得系统结构更加稳定。

最后,需要给大家说明下抽象工厂模式中的“开闭原则”的倾斜性特点

在抽象工厂模式中,增加新的产品族很方便,但是增加新的产品等级结构很麻烦。产品等级结构间的约束或关联性,会要求设计人员在设计之初就要考虑全面。

如果在设计完成之后向系统中增加新的产品等级结构,或删除已有的产品等级结构,那将会导致系统出现较大的修改,为后续维护工作带来诸多麻烦。

🆗,到目前,我们已经把工厂模式的三种分类就讲解完成了。我们下期见。文章来源地址https://www.toymoban.com/news/detail-710886.html

到了这里,关于抽象工厂模式:创建高效强大的对象家族的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 创建型模式-抽象工厂模式

    在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。通过使用抽象工厂模式,可以将客户端与具体产品的

    2024年02月11日
    浏览(33)
  • 【设计模式】创建型-抽象工厂模式

    在工厂方法模式中,每一个具体的工厂子类只能生成一种具体的产品,如果想要生产另外一种产品,就需要重新定义一个抽象工厂类,这样的拓展性还是会有点不足,而抽象工厂模式则是可以一个具体工厂可以生产不同的产品。 在学习抽象工厂模式之前先了解一下 产品族和

    2023年04月09日
    浏览(38)
  • 设计模式-创建型模式-抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。 由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系

    2024年02月22日
    浏览(51)
  • [设计模式]创建型模式-抽象工厂模式

    抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式将一组具有共同主题的单个工厂封装起来,它提供接口用于创建相关或依赖对象的家族,而不需要指定具体的类。 抽象工厂模式包含以下几个

    2024年03月08日
    浏览(41)
  • 创建型设计模式05-抽象工厂模式

    ✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,围绕一个超级工厂创建其他工厂,也称作为工厂的工厂(大工厂里的小工厂)。在抽象工厂模式中, 接口负责创建一组相关对

    2024年02月07日
    浏览(40)
  • 抽象工厂模式——产品族的创建

    抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式

    2024年02月15日
    浏览(37)
  • 【Java 设计模式】创建型之抽象工厂模式

    在软件开发中,抽象工厂模式是一种常见的创建型设计模式, 它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 。抽象工厂模式的核心思想是将一组相关的产品组合成一个工厂,客户端通过工厂接口创建一系列产品。在本文中,我们将介绍 Jav

    2024年01月17日
    浏览(73)
  • 【java设计模式】创建型模式介绍(工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式)

    简介 本文介绍Java设计模式中创建型模式的五种 一、工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工

    2024年02月16日
    浏览(45)
  • 设计模式-创建型模式之抽象工厂模式(Abstract Factory)

    在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要 一个工厂可以提供多个产品对象 ,而不是单一的产品对象。 为了更

    2023年04月20日
    浏览(40)
  • [设计模式Java实现附plantuml源码~创建型] 产品族的创建——抽象工厂模式

    前言: 为什么之前写过Golang 版的设计模式,还在重新写 Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很多人学习有做笔记的习惯,如果单纯的只是放一张图片,那

    2024年01月22日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包