4、设计模式-创建型模式-抽象工厂模式

抽象工厂模式

产品等级结构和产品族

工厂方法模式中具体工厂负责生产具体的产品

每一个具体工厂对应一种具体的产品

工厂方法具有唯一性

一般情况下:一个具体工厂中只有一个或一组重载的工厂方法

有时候希望一个一个工厂可以提供多个产品对象

而不是单一的产品对象

产品等级结构

产品等级结构即产品的继承结构,如一个抽象类是电视机

子类有海尔电视机、海信电视机等

抽象电视机与具体与具体品牌的电视机之间构成了一个产品等级结构

抽象电视机是父类,具体品牌的电视机是其子类

产品族

在抽象工厂模式中

产品族是指由同一个工厂生产的

位于不同产品等级结构中的一组产品

如海尔电器工厂生产海尔电视、海尔冰箱等

海尔电视机位于电视机产品等级结构中

海尔电冰箱位于电冰箱产品等级结构中

海尔电视机、海尔电冰箱构成了一个产品族

图示:

不同颜色的多个正方形、圆形、椭圆分别构成了三个不同的产品等级结构

相同颜色的正方形、圆形、椭圆形构成了一个产品族

每一个形状对象都位于某个产品族

并属于产品等级结构

图中一共有五个产品族分别属于三个不同的等级结构

只要指明一个产品所处的产品族以及它所属的等级结构,就可以唯一确定这个产品

当系统所提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结
构、属于不同类型的具体产品时就可以使用抽象工厂模式。

抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形式。

抽象工厂模式与工厂方法模式最大的区别在于,
工厂方法模式针对的是一个产品等级结构,而抽象工厂模式需要面对多个产品等级结构,一
个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建。

当一个工厂等级结构
可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方
法模式更为简单、更有效率。

抽象工厂模式示意图

每一个具体工厂可以生产属于一个产品族的所有产品,例如生产颜色相同的正方
形、圆形和椭圆形,所生产的产品又位于不同的产品等级结构中。

相关概述:

抽象工厂模式为创建一组对象提供了一种解决方案

与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品

他只负责创建一族产品

定义:

提供了一个创建一系列相关或相互依赖对象的接口

无须知道指定他们具体的类

抽象工厂模式又称为Kit模式,他是一种创建型模式

抽象工厂模式中,每一个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品

这些产品构成了一个产品族

图示:

角色:

AbstractFactory(抽象工厂):它声明了一组用于创建一族产品的方法,每一个方法对应一
种产品。

abstract class AbstractFactory {
public abstract AbstractProductA createProductA(); //工厂方法一
public abstract AbstractProductB createProductB(); //工厂方法二
……
}

ConcreteFactory(具体工厂):它实现了在抽象工厂中声明的创建产品的方法,生成一组具
体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。

class ConcreteFactory1 extends AbstractFactory {
  //工厂方法一
  public AbstractProductA createProductA() {
    return new ConcreteProductA1();
  }
  //工厂方法二
  public AbstractProductB createProductB() {
    return new ConcreteProductB1();
  }
  ……
}

AbstractProduct(抽象产品):它为每种产品声明接口,在抽象产品中声明了产品所具有的
业务方法。

ConcreteProduct(具体产品):它定义具体工厂生产的具体产品对象,实现抽象产品接口中
声明的业务方法。

事例:

公司欲开发一套界面皮肤库,可以对Java桌面软件进行界面美化。

该皮肤库需要具备良好的灵活性和可扩展性,用户可以自由选择不同的皮肤,开发人员可以
在不修改既有代码的基础上增加新的皮肤。

解决方法:

原文地址:https://www.cnblogs.com/Mrchengs/p/10888962.html

时间: 2024-11-05 18:36:01

4、设计模式-创建型模式-抽象工厂模式的相关文章

Java设计模式(创建型:工厂方法模式+抽象工厂模式)

设计模式根据目的准则可以分为三类: 创建型:creational 创建型的设计模式与对象的创建有关. 结构型:Structural 处理类和对象之间的组合. 行为型:behavioral 描述类和对象如何交互及如何分配职责. 工厂方法模式 站在使用者的角度,工厂方法模式是指使用者提出想要实现的具体功能或者说是想要生产的具体的东西的要求,在通过工厂制造之后就将该东西或功能交付给使用者.使用者并不知道实现的具体过程,只是做了要求提出以及实现的结果的使用. 严谨来说工厂方法模式(Factory Met

设计模式(二)抽象工厂模式

抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类.每个生成的工厂都能按照工厂模式提供对象. 介绍 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 主要解决:主要解决接口选择的问题. 何时使用:系统的产品有多于一个的产品族,而系统只消费其

Java设计模式—工厂方法模式&抽象工厂模式

工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式.       工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义:Creator为抽象创建 类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的. 工厂方法模式的扩展方式有很多种,下边是工厂方法模式一个比较实用的源代码: 抽象产品类: pub

设计模式(3)抽象工厂模式(Abstract Factory)

设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 设计模式(2)工厂方法模式(Factory Method) 源码地址 0 抽象工厂模式简介 0.0 抽象工厂模式定义 抽象工厂模式一般的书面定义为:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 提供创建接口,无需指定具体实现类,这个原则在简单工厂模式和工厂方法模式篇已经反复讲到了,这是面向接口编程的一个基本准则,很显然,从抽象工厂模式的一般定义中可以看出这也是抽象工厂模式的一个核心,而抽象工厂模式的另

设计模式(3)--抽象工厂模式(Absrtact Factory Pattern)

定义 抽象工厂模式的实质就是提供接口来创建一系列相关或独立的对象而不指定这些对象的具体类. 理解 在软件系统中,经常面临着"一系列相互依赖的对象"的创建工作:同时由于需求的变化,往往存在着更多系列对象的创建工作.如何应对这种变化?如何绕过常规的对象的创建方法(熟悉的new操作符),提供一种"封装机制"来避免客户程序和这种"多系列具体对象创建工作"的紧耦合?这就是我们要说的抽象工厂模式.抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂

大话设计模式之简单工厂模式&工厂方法模式&抽象工厂模式

创造类模式分为三种:简单工厂模式,工厂模式和抽象工厂模式. 定义: 简单工厂模式:用一个单独的类来做创造实例的过程. 工厂模式:一个用于创建对象的接口,让子类决定实例化哪一个类,讲一个类的实例化 延迟到其子类. 抽象工厂模式:为创建一组相关或相互依赖的对象的类,而不指定具体类. 结构图: 这是简单工厂的结构图,从图中就很好理解. 简单工厂的优点: 根据用户需要,new出需要的对象. 但是简单工厂弊端: 当新加入一个功能是,就要修改工厂.这个时候,就需要工厂模式了. 从图中我们可以看出: 工厂模式

设计模式(三)——抽象工厂模式

设计模式(三)--抽象工厂模式 一.抽象工厂模式 1.抽象工厂模式简介 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. UML类图: 2.抽象工厂模式角色 (1)抽象工厂AbstractFactory:抽象工厂类,提供创建两种产品的接口CreateProductA和CreateProductB,由派生的各个具体工厂类对其实现 (2)具体工厂:包括具体工厂FactoryM和具体工厂FactoryN.具体工厂FactoryM用于生产具体产品MProductA和具体产品M

.Net简单工厂模式,工厂模式,抽象工厂模式实例

1.定义   简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类. 抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. 2.实例 用工人种蔬菜的例子来说明,蔬菜植物的产品器官有根.茎.叶.花.果等5类,因此按产品器官分类也分成5种,分别是根菜类,茎菜类,叶莱类,花菜类以及果菜类.我们以根菜类,茎菜类为例,

23中设计模式----------抽象工厂模式

抽象工厂模式: 在上一篇中讲到通过各个具体球类(如:足球,篮球等)来继承总球类(Ball),来实现通过BallFactory对具体球类的生产. 不过,当时只是能造出不同球类,而在每种球类中肯定也有颜色,大小等不同的属性.所以,为了实现在工厂中添加属性.将抽象的Ball球类,修改成Bll接口,在该接口中添加所需要的方法: 这种模式是抽象工厂模式,抽象工厂模式是抽象方法模式的升级.在有多个业务品种,业务分级时,采用抽象工厂模式生产需要的对象是一种非常好的解决房还是.(比如,在生产球类的时候,不仅要分