Java23种设计模式探究之(抽象工厂模式)

说在前面的话

在上一篇文中介绍工厂模式时其实已经提到过抽象工厂模式。在此先回顾一下:

简单工厂模式就没什么好说的了,无非是所有的东西都写在一个类里面,要什么就调用什么,如果要添加新的方法也是到这类里面添加,代码很多,看起来也是很乱,就像一个大工厂,什么都在里面。扩展性很低。

而工厂方法模式,把说明的理论和生产的东西就分开一点。抽象工厂模式是工厂方法模式的升级。说简单点,后面两种工厂模式都是java三大特征的继承和多态的具体表现,你从后面的类图中就可以很简单看到继承(接口为实现)的关系,而你在代码中就很容易看到多态的使用。 

抽象工厂模式

简介: 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。用来生产不同产品族的全部产品(对于增加新的产品,无能为力。可增加一系列的产品族)。 抽象工厂模式用来生产不同产品族的全部产品,对于只增加产品某一部分则不适用。抽象工厂的接口类是能创建多个相关的对象,而工厂方法的接口类是只创建一个对象。抽象工厂模式是工厂模式的一种升级版本。
特点:
1 系统独立于它的产品创建、组合和表示。即无需关心内部对象时如何创建的,怎么创建的,什么含义。
2 系统需要多个产品组合中的一个配置。由于对象很多,能够组合出的组合非常多,而系统只是使用某一个组合。3 强调的对象的组合结果,而不是他们具体的接口和实现。
实例:
例如:生产汽车,抽象工厂模式可以生产高端汽车全部配件来组成一个高端汽车,低端汽车全部配件来组成要给低端的汽车,但是不能产生一个高端的发动机和一个低端的座椅来组成一个中等的汽车。这样会混乱。

代码实现

A、首先使用一个接口来定义一个发动机,使用具体的类来定义发动机的好坏(具体实现)

B、定义一个汽车总工厂,用来生产各种类型的汽车。所有的汽车都需要依赖此工厂来生产汽车。

C、然后根据生产的不同产品,來创建具体的实现来生产汽车。例如:专门生产高端的汽车,专门生产低端的汽车。都可以用针对CarFactory具体的实现来创建。

D、具体生产汽车的时候就可以根据需要来创建具体的汽车了。

以上就是一个针对产品族的工厂,用来生产一个产品,而不是一个配件。假如以后想生产一个中端汽车产品。就可以增加相应的类,实现汽车总工厂CarFactory来生产。

工厂模式要点

简单工厂模式(静态工厂模式):
虽然某种程度不符合面向对象规则(不符合开闭原则,每次新增内容都需要在原有代码上修改),但是实际使用最多。
工厂方法模式 :
不修改已有类的前提下,通过增加新类来实现扩展。
抽象工厂模式 :
不可以增加产品中某一个配件,可以增加一个具体的产品族。


原文连接:工厂模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 参考资料:菜鸟教程之设计模式 设计模式概述 设计模式(Design pattern)代表了最佳的实践,通常被有经验...
    Steven1997阅读 4,925评论 1 12
  • 前言 关于设计模式,是一个永远说不完的也说不清的话题。毕竟在编程的世界里,没有最好的设计模式,只有最合适的设计模式...
    VV木公子阅读 5,494评论 0 9
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,384评论 1 15
  • 他只知道,自己周遭的环境十分陌生。 他很惶恐,这在他二十一年的人生中从未出现过。 他一直都是一个八风不动、淡然自若...
    MarcieLamm阅读 864评论 0 0
  • 洁身如莲,香远益清。很喜欢这句话。 有人说当你真正爱上一个人的时候,你会患上情感洁癖。我赞同这个说法。因为在没有爱...
    在暖阳里陪你一世阅读 2,593评论 0 0