`

抽象工厂模式

阅读更多



 抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。

    每个模式都是针

对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。
    在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。
    产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如AMDCPUADM芯片的主板,组成一个家族。IntelCPU和 Intel芯片的主板,又组成一个家族。而这两个家族都来自于两个产品等级:CPU,主板。一个等级结构是由相同的结构的产品组成

在以下情况可以使用Abstract Factory模式

1这个系统的产品有多于一个的产品簇,而系统只消费其中某一族的产品。

2同属于同一产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。

3系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。

 

 

 

抽象工厂模式有下面的一些优点和缺点:

1) 它分离了具体的类Abstract Factory模式帮助你控制一个应用创建的对象的类。因为一个工厂封装创建产品对象的责任和过程,它将客户与类的实现分离。客户通过它们的抽象接口操纵实例。产品的类名也在具体工厂的实现中被分离;它们不出现在客户代码中。

2) 它使得易于交换产品系列一个具体工厂类在一个应用中仅出现一次—即在它初始化的时候。这使得改变一个应用的具体工厂变得很容易。它只需改变具体的工厂即可使用不同的产品配置,这是因为一个抽象工厂创建了一个完整的产品系列,所以整个产品系列会立刻改变。

3) 它有利于产品的一致性当一个系列中的产品对象被设计成一起工作时,一个应用一

次只能使用同一个系列中的对象,这一点很重要。而抽象工厂很容易实现这一点。

4) 难以支持新种类的产品难以扩展抽象工厂以生产新种类的产品。这是因为抽象工厂接口确定了可以被创建的产品集合。支持新种类的产品就需要扩展该工厂接口,这将涉及抽象工厂类及其所有子类的改变。我们会在实现一节讨论这个问题的一个解决办法。

 



 

 

这里有两个产品族:windowns产品族和unix产品族。

Windowns产品族有winButton和winText组成,unix产品族由UnixButton和UnixText组成。我们可以创建两个工厂winFactory和unixFactory。winFactory负责创建windowns产品族中的产品,unixFactory负责创建unxi产品族中的产品。这就是抽象工厂模式的应用。

 



 

 

<!--EndFragment-->

  • 大小: 27.1 KB
  • 大小: 54 KB
  • 大小: 45.2 KB
  • 大小: 110.7 KB
分享到:
评论

相关推荐

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...

    设计模式-抽象工厂模式(讲解及其实现代码)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    抽象工厂模式uml类图

    java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式

    工厂方法模式和抽象工厂模式的区别

    工厂方法模式和抽象工厂模式是两种常见的设计模式,它们都属于创建型模式,用于解决对象的创建问题。在软件设计中,这两种模式都是用来隔离对象的创建和使用,以提高系统的灵活性和可扩展性。 首先,工厂方法模式的...

    设计模式 - 抽象工厂模式

    设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际...

Global site tag (gtag.js) - Google Analytics