再次研究设计模式 第一章 抽象工厂

原创 2006年05月19日 14:36:00

最近苦学UML2.0,突然发现原先以为了解的设计模式已经淡忘了。最近5年来国内介绍这个的书是多如牛毛啊,不外乎互相搬砖。于是决定自己再从英文原版中翻译一下,顺便还可以加上自己的理解。

工作日每天翻译一段吧。英文原文附后,免得译得不好还要再找原文。

原文从UML设计工具 StartUML中摘抄

 

1 抽象工厂

目的

  • 为生成一组相关或者相互依赖的类提供一个接口,真正创建的产品的工作由子类实现。Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

结构

 

  • AbstractFactory 抽象工厂: 创建抽象产品的抽象的操作者。

  • ConcreteFactory (实现工厂): 具体产品类对象创建的实现者。

  • AbstractProduct : 某一类型(具有相同接口)产品类的接口声明。

  • ConcreteProduct(): 由创建的产品对象的操作接口。

  • Client : 只使用由AbstractFactoryAbstractProduct来创建实际的产品。

应用场合

  • 独立于产品如何创建、组合和表示的系统。a system should be independent of how its products are created, composed, and represented.

  • 会被几类产品中的某一类配置确定的系统。a system should be configured with one of multiple families of products.

  • 如果你要设计使用一系列互相关联的产品,用此模式来加强相互间的约束。a family of related product objects is designed to be used together, and you need to enforce this constraint.

  • 你想提供一系列的产品的产品库,只暴露产品的接口而不是它们的实现。you want to provide a class library of products, and you want to reveal just their interfaces, not their implementations.

模式效果

  • 分离具体类It isolates concrete classes. 因为抽象工厂封装了实际产品对象的创建过程,它将客户与实现类分离,所以该抽象工厂模式可以帮助你操作应用程序创建的一组类。而产品类的名字被实现工厂分离,不会被客户代码知道,客户代码只需通过抽象接口操作产品实例。The Abstract Factory pattern helps you control the classes of objects that an application creates. Because a factory encapsulates the responsibility and the process of creating product objects, it isolates clients from implementation classes. Clients manipulate instances through their abstract interfaces. Product class names are isolated in the implementation of the concrete factory; they do not appear in client code.

  • 可以方便是交换产品类。It makes exchanging product families easy. 在应用程序中,一类产品的实现工厂只有一个,就是在被真正实例化的那个。这使得在应用程序中改变实现工厂非常方便—你只需更改实现工厂就可以实现不同的产品配置。由于抽象工厂生成全部的产品类,所有的产品都可以被一次性更改。The class of a concrete factory appears only once in an application—that is, where it's instantiated. This makes it easy to change the concrete factory an application uses. It can use different product configurations simply by changing the concrete factory. Because an abstract factory creates a complete family of products, the whole product family changes at once.

  • 它促进了产品的一致性It promotes consistency among products. 当有几类的产品在一起协同工作时,应用程序只在同一时间内使用一类产品就非常重要,抽象工厂模式就能很容易地保证这一点。When product objects in a family are designed to work together, it's important that an application use objects from only one family at a time. AbstractFactory makes this easy to enforce.

  • 想要支持新类型的产品很困难Supporting new kinds of products is difficult. 扩充AbstractFactory来支持新类型的产品是不方便,因为AbstractFactory的接口限定了能够生成的产品类,要想支持新的产品类就需要扩展抽象工厂,这需要扩展AbstractFactory以及它所有的子类Extending abstract factories to produce new kinds of Products isn't easy. That's because the AbstractFactory interface fixes the set of products that can be created. Supporting new kinds of products requires extending the factory interface, which involves changing the AbstractFactory class and all of its subclasses.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java23种设计模式的研究之一(抽象工厂方法模式(Abstract Factory))

前面一篇文章分析到工厂方法模式(3种类型模式),今天有空就倒腾一番抽象工厂模式。前面的工厂模式对我们原有的代码侵入性太强,不利于我们后期对原有功能的扩展,这也违背了Java设计模式的六大原则之一开闭原...

[设计模式as3版]六.抽象工厂

package com.pizza { import com.pizza.ingredient.Cheese; import com.pizza.ingredient.Dough; impo...

设计模式中的抽象工厂

  • 2013-07-20 21:44
  • 36KB
  • 下载

抽象工厂-设计模式

  • 2013-04-27 13:42
  • 1.25MB
  • 下载

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

sourcemaking.com 抽象工厂: 提供一个接口来创建相关的或有依赖的对象们的家庭,而不用指明他们的具体类。一种层级结构封装了:许多可能的“平台”(比如窗口系统、操作系统、数据库等),还有构...

Java设计模式-抽象工厂

  • 2015-01-25 01:19
  • 13KB
  • 下载

JAVA设计模式二--Abstract Factory(抽象工厂)

抽象工厂模式: 提供一个创建一系列相关活相互依赖对象的接口,而无需指定他们具体的类。 举2个例子: 1.BOSS要求提供JDBC,Hibernate,Ibatis等多套数据库操作解决方案,能够无...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)