- 浏览: 59894 次
- 性别:
- 来自: 北京
文章分类
最新评论
1、意图
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2、别名
Kit
3、动机
考虑一个支持多种视感(look-and-feel)标准的用户界面工具包,例如Motif和Presentation Manager。不同的视感风格为诸如滚动条、窗口和按钮等用户界面“窗口组件”定义不同的外观和行为。为保证视感风格标准间的可移植性,一个应用不应该为一个特定视感外观硬编码它的窗口组件。在整个应用中实例化特定视感风格的窗口组件类将使得以后很难改变视感风格。如下图所示。
为解决这一问题我们可以定义一个抽象的WidgetFactory类,这个类声明了一个用来创建每一类基本窗口组件的接口。每一类窗口组件都有一个抽象类,而具体子类则实现了窗口组件的特定的视感风格。对于每一个抽象窗口组件类,WidgetFactory接口都有一个返回新窗口组件对象的操作。客户调用这些操作以获得窗口组件实例,但客户不知道他们正在使用的是哪些具体类。这样客户就不依赖于一般的视感风格。
每一种视感标准都对应于一个具体的WidgetFactory子类。每一个子类实现那些用于创建合适感官风格的窗口组件的操作。例如,MotifWidgetFactory的CreateScrollBar操作实例化并返回一个Motif滚动条,而相应的PMWidgetFactory操作返回一个Presentation Manager的滚动条。客户仅通过WidgetFactory接口创建窗口组件,他们并不知道哪些类实现了特定风格的窗口组件。换言之,客户仅与抽象定义的接口交互,而不使用特定的具体的接口。
4、适用性
在以下情况下使用Abstract Factory模式
1)一个系统要独立于它的产品的创建、组合和表示时。
2)一个系统要由多个产品系列中的一个来配置时。
3)当你要强调一系列相关产品对象的设计以便进行联合使用时。
4)当你提供一个产品类库,而只想显示他们的接口而不是实现时。
5、结构
6、参与者
AbstractFactory(WidgetFactory)
----声明一个创建抽象产品对象的操作接口
ConcreteFactory(MotifWidgetFactory,PMWidgetFactory)
----实现创建具体产品对象的操作
AbstractProduct(Windows,ScrollBar)
----为一类产品对象声明一个接口
ConcreteProduct(MotifWindow,MotifScrollBar)
----定义一个将被相应的具体工厂创建的产品对象
----实现AbstractProduct接口
Client
----仅适用由AbstractFactory和AbstractProduct类声明的接口
7、协作
通常在运行时刻创建一个ConcreteFactory类的实例。这一具体的工厂创建具有特定实现的产品对象。为创建不同的产品对象,客户应适用不同的具体工厂。
AbstractFactory将产品对象的创建延迟到它的ConcreteFactory子类。
抽象工厂代码
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2、别名
Kit
3、动机
考虑一个支持多种视感(look-and-feel)标准的用户界面工具包,例如Motif和Presentation Manager。不同的视感风格为诸如滚动条、窗口和按钮等用户界面“窗口组件”定义不同的外观和行为。为保证视感风格标准间的可移植性,一个应用不应该为一个特定视感外观硬编码它的窗口组件。在整个应用中实例化特定视感风格的窗口组件类将使得以后很难改变视感风格。如下图所示。
为解决这一问题我们可以定义一个抽象的WidgetFactory类,这个类声明了一个用来创建每一类基本窗口组件的接口。每一类窗口组件都有一个抽象类,而具体子类则实现了窗口组件的特定的视感风格。对于每一个抽象窗口组件类,WidgetFactory接口都有一个返回新窗口组件对象的操作。客户调用这些操作以获得窗口组件实例,但客户不知道他们正在使用的是哪些具体类。这样客户就不依赖于一般的视感风格。
每一种视感标准都对应于一个具体的WidgetFactory子类。每一个子类实现那些用于创建合适感官风格的窗口组件的操作。例如,MotifWidgetFactory的CreateScrollBar操作实例化并返回一个Motif滚动条,而相应的PMWidgetFactory操作返回一个Presentation Manager的滚动条。客户仅通过WidgetFactory接口创建窗口组件,他们并不知道哪些类实现了特定风格的窗口组件。换言之,客户仅与抽象定义的接口交互,而不使用特定的具体的接口。
4、适用性
在以下情况下使用Abstract Factory模式
1)一个系统要独立于它的产品的创建、组合和表示时。
2)一个系统要由多个产品系列中的一个来配置时。
3)当你要强调一系列相关产品对象的设计以便进行联合使用时。
4)当你提供一个产品类库,而只想显示他们的接口而不是实现时。
5、结构
6、参与者
AbstractFactory(WidgetFactory)
----声明一个创建抽象产品对象的操作接口
ConcreteFactory(MotifWidgetFactory,PMWidgetFactory)
----实现创建具体产品对象的操作
AbstractProduct(Windows,ScrollBar)
----为一类产品对象声明一个接口
ConcreteProduct(MotifWindow,MotifScrollBar)
----定义一个将被相应的具体工厂创建的产品对象
----实现AbstractProduct接口
Client
----仅适用由AbstractFactory和AbstractProduct类声明的接口
7、协作
通常在运行时刻创建一个ConcreteFactory类的实例。这一具体的工厂创建具有特定实现的产品对象。为创建不同的产品对象,客户应适用不同的具体工厂。
AbstractFactory将产品对象的创建延迟到它的ConcreteFactory子类。
抽象工厂代码
interface IProduct1 { public void show(); } interface IProduct2 { public void show(); } class Product1 implements IProduct1 { public void show() { System.out.println("这是1型产品"); } } class Product2 implements IProduct2 { public void show() { System.out.println("这是2型产品"); } } interface IFactory { public IProduct1 createProduct1(); public IProduct2 createProduct2(); } class Factory implements IFactory{ public IProduct1 createProduct1() { return new Product1(); } public IProduct2 createProduct2() { return new Product2(); } } public class Client { public static void main(String[] args){ IFactory factory = new Factory(); factory.createProduct1().show(); factory.createProduct2().show(); } }
发表评论
-
STRATEGY(策略)——对象行为型模式
2013-06-17 16:19 6461、意图 定义一系列的算法,把它们一个个封装起来,并且 ... -
STATE(状态)—— 对象行为型模式
2013-06-14 16:49 7401、意图 允许一个 ... -
OBSERVER(观察者)——对象行为型模式
2013-06-13 15:36 6421、意图 定义对象 ... -
MEDIATOR(中介者)——对象行为型模式
2013-06-09 16:17 6491、意图 用一个中 ... -
CHAIN OF RESPONSIBILITY(职责链) —— 对象行为型模式
2013-06-06 16:32 6161、意图 使多个对象都有机会处理请求,从而避免请求的发 ... -
PROXY(代理) —— 对象结构型模式
2013-06-05 11:24 7251、意图 为其他对 ... -
DECORATOR(装饰) -—— 对象机构型模式
2013-06-03 11:43 6681、意图 动态地给一个对象添加一些额外的职责。就增加功 ... -
COMPOSITE(组合) ---- 对象结构型模式
2013-05-31 15:12 7211、意图 将对象组 ... -
FACTORY METHOD(工厂方法) ---- 对象创建型模式
2013-05-28 11:43 6951、意图 定义一个用于创建对象的接口,让子类决定实例化 ... -
设计模式的三大分类解析
2013-05-24 14:48 807设计模式在功能上 ... -
TEMPLATE METHOD(模板方法)----- 类行为型模式
2013-04-07 11:27 6711、意图 定义一个 ... -
ADAPTER(适配器) --- 类对象结构型模式
2013-03-28 11:33 5581、意图 将一个类的接口转化成客户希望的另外一个接口。 ... -
BRIGE(桥接) ------ 对象结构型模式
2013-03-27 11:20 7041、意图 将抽象部 ... -
COMMAND(命令) ---- 对象行为型模式
2013-03-06 11:20 6911、意图 将一个请求封装为一个对象,从而使你可用不同的 ... -
VISITOR(访问者) ---- 对象行为型模式
2013-02-26 17:03 8551、意图 表示 ... -
Builder(生成器)---- 对象创建型模式
2013-02-25 15:54 5961、意图 将一个复杂对象的创建和它的表示分离,使得同样的 ... -
Flyweight pattern(享元模式)
2013-02-20 14:45 7331. 概述 面向对象技术可以很好地解决系统一些灵活性或可扩展 ... -
Facade模式 --- 对象结构型模式
2013-02-19 17:03 6721、意图 为子系统中 ... -
23个设计模式的名字和意图
2013-02-19 15:41 6841、Abstract Factory:提供 ... -
从MVC理解设计模式
2013-02-19 14:40 727本文将透过MVC来帮助我们理解“模式”这一术语的含义。 ...
相关推荐
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式) 体验课程
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式) (Level 300)
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式),.net常用设计模式。
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
3、抽象工厂模式(Abstract Factory Pattern) 用意:一个工厂生产一系列产品
Abstract Factory模式 1 定义创建对象的接口,并封装对象的创建 2 将具体化类的工作延迟到了类中 3 创建创建一组相关对象或者说是一组相互依赖的对象 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来...
在前面介绍的两个创建型模式里面,我们解决的都是有关"new"的问题,用它们来避免显式指定类创建对象。我写的也非常简单易懂,相信看过的朋友们都应该对简单工厂模式、工厂方法模式的意图、所能解决的问题及适用情景...
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责...
NULL 博文链接:https://jacky-dai.iteye.com/blog/2294531
本次代码只提供了创建型模式的应用代码和说明,包括:Singleton 单件,Abstract Factory 抽象工厂,Builder 生成器,Factory Method 工厂方法。 Singleton模式解决的是实体对象个数的问题。除了Singleton...
抽象工厂模式(Abstract Factory) ——探索设计模式系列之三 Terrylee,2005年12月12日 概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建...
创建型模式 (100%) 设计模式面面观(5):抽象工厂模式(AbstractFactory)-创建型模式 (100%) 设计模式面面观(6):生成器模式(Builder)-创建型模式 (100%) 设计模式面面观(7):原型模式(Prototype...
2.1 抽象工厂(AbstractFactory):担任这个角色的是工厂方法模式的核心,它是与应用系统商业逻辑无关的。 2.2 具体工厂(ConcreteFactory):这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择...
3.1 ABSTRACT FACTORY(抽象工厂)——对象创建型模式 3.2 BUILDER(生成器)——对象创建型模式 3.3 FACTORY METHOD(工厂方法)——对象创建型模式 3.4 PROTOTYPE(原型)——对象创建型模式 3.5 SINGLETON(单件...
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式) C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式) C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型...
3.1 Abstract Factory(抽象工厂)—对象创建型模式 57 3.2 Builder(生成器)—对象创建型模式 633.3 Factory Method(工厂方法)—对象创建型模式 70 3.4 Prototype(原型)—对象创建型模式 87 3.5 Singleton...
3.1 Abstract Factory(抽象工厂)— 对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 ...
# 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。# 该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。# 在抽象工厂模式中,接口是...