Java语言抽象工厂创立性模式介绍

工厂模式有简单工厂模式,工厂方法模式和抽象工厂模式几种形态。其中简单 工厂模式和工厂方法模式已经在前面作过介绍。在这里,我们来介绍抽象工厂模 式。

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

抽象工厂模式的定义

抽象工厂模式是工厂方法模式的进一步扩广化和抽象化。我们给出抽象工厂 模式的类图定义如下。

图1. 抽象工厂模式的类图定义

从上图可以看出,简单工厂模式涉及到以下的角色

抽象工厂(AbstractFactory)类或接口

担任这个角色的是工厂方法模式的核心,它是与应用程序无关的。任何在模 式中创立对象的工厂类必须实现这个接口,或继承这个类。

实工厂类 (Conrete Factory)

担任这个角色的是与应用程序紧密相关的,直接在应用程序调用下,创立产 品实例的那样一些类。

抽象产品 (Abstract Product)

担任这个角色的类是工厂方法模式所创立的对象的父类,或它们共同拥有的 接口。

实产品 (Concrete Product)

担任这个角色的类是工厂方法模式所创立的任何对象所属的类。

怎么这个类图和工厂方法模式的类图看起来是一样的?

是的,图是一样的,但是含义有很大的不同。必须指出,在抽象工厂模式中 ,抽象产品 (AbstractProduct) 可能是一个或多个,从而构成一个或多个产品 族(Product Family)。 在只有一个产品族的情况下,抽象工厂模式实际上退化 到工厂方法模式。在上面的类图中,只给出了一个产品族,相当于位图中的一个 点,而完整的位图应当是三维的,如下图。

图2. 抽象工厂模式的位图

时间: 2024-09-14 22:08:57

Java语言抽象工厂创立性模式介绍的相关文章

Java语言简单工厂创立性模式介绍

研究和使用创立性模式的必要性 面向对象的设计的目的之一,就是把责任进行划分,以分派给不同的对象.我们推荐这种划分责任的作法, 是因为它和封装(Encapsulation)和分派(Delegation)的精神是相符合的.创立性模式把对象的创立过程封装起来,使得创立实例的责任与使用实例的责任分割开, 并由专门的模块分管实例的创立,而系统在宏观上不再依赖于对象创立过程的细节. 所有面向对象的语言都有固定的创立对象的办法.Java语的办法就是使用new操作符.比如 StringBuffer s = ne

Java语言工厂方法创立性模式介绍

正如同笔者在<简单工厂模式>一节里介绍的,工厂模式有简单工厂模式,工厂方法模式和抽象工厂模式几种形态.简单工厂模式已经在前面作过介绍.在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样. 而本节要讨论的工厂方法模式是简单工厂模式的进一步抽象化和推广.它比简单工厂模式聪明的地方在于, 它不再作为一个具体的交通警察的面貌出现,而是以交通警察局的面貌出现.它把具体的车辆交通

Java语言单态创立性模式介绍

什么是模式 一个围棋下得好的人知道,好的"形"对于围棋非常重要.形是棋子在棋盘上的几何形状的抽象化.形就是模式(Pattern),也是人脑把握和认识外界的关键.而人脑对处理模式的能力也非常高超, 人可以在几百张面孔中一下子辨认出所熟悉的脸来,就是一个例子. 简而言之,在我们处理大量问题时,在很多不同的问题中重复出现的一种性质,它使得我们可以使用一种方法来描述问题实质并用本质上相同,但细节永不会重复的方法去解决,这种性质就叫模式.模式化过程是把问 题抽象化,在忽略掉不重要的细节后,发现问

简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

[本文转自简单工厂.工厂方法.抽象工厂.策略模式.策略与工厂的区别] 结合简单示例和UML图,讲解工厂模式简单原理. 一.引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰).Bmw(宝马).Audi(奥迪)),还雇了司机为他开车.不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!",坐上Bmw后他说"开宝马车!",坐上 Audi后他说"开奥迪车!".你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们

工厂模式之三 - 抽象工厂(Abstract Factory)模式

抽象工厂(Abstract Factory)模式 不同于简单工厂和工厂方法,抽象工厂用于创建一个产品族, 即抽象工厂模式用于创建一系列类,这些类在业务上有关联. 我们来举个快餐店的例子. 场景:快餐店的套餐分为汉堡和饮料,汉堡可以选鸡肉汉堡,鱼肉汉堡,巨无霸等等,          饮料可以选咖啡,可乐,橙汁等等.   对于业务来说,汉堡和饮料分别可以被抽象为两类产品,因此,我们可以建立2个接口. 汉堡可以有2个方法,一个是打印汉堡名,一个是打印价钱,如下: namespace designpa

了解Java语言中的并发性和Scala提供的附加选项

本文是一个有关 JVM 并发性的新系列第一篇,将介绍 Java 7 中最新的并发性编程功能,还将介绍一些 Scala 增强.本文还为帮助您理解 Java 8 中的并发性特性扫清了障碍. 处理器速度数十年来一直持续快速发展,并在世纪交替之际走到了终点.从那时起,处理器制造商更多地是通过增加核心来提高芯片性能,而不再通过增加时钟速率来提高芯片性能.多核系统现在成为了从手机到企业服务器等所有设备的标准,而这种趋势可能继续并有所加速.开发人员越来越需要在他们的应用程序代码中支持多个核心,这样才能满足性能

Java语言入门级的十二大特色详细介绍

1.Java是简单的 Java与C++极为相似,但却简单得多.高级编程语言的所有特性中,不是绝对需要的都已删去了.例如,Java没有算符过载.标题文件.预处理.指针运算.结构.联合.多维数组.模板及隐式类型变换.如果你知道一点C.C++或Pascal,你很快就会驾驭Java.这里是一个简单的Java Hello World程序: 以下是引用片段:public class HelloInternet{public static void main(String argv[]){System.out

C#设计模式之抽象工厂(abstract factory)模式示例源代码

设计|示例|源代码 using System; namespace Design_Pattern{  public class  Computer {  private RAM Ram;  private CPU Cpu;  public Computer(RAM ram,CPU cpu)  {   this.Ram =ram;   this.Cpu =cpu;      Console .WriteLine("A Computer is Composed! "+this.Ram +&

java中简单工厂模式、工厂方法模式、抽象工厂模式介绍

工厂模式适合凡是出现大量对象需要创建,而且这些对象拥有相同的接口,可以使用工厂模式进行创建. 简单工厂模式 简单工厂模式分为三种:普通工厂模式.多个方法工厂模式.静态方法工厂模式 -------------------------------------------------------------------------------- 以发送QQ消息或者微信消息为例来说明: 普通工厂模式 /**  * 两种共同的接口  */ public interface Message {     pu