`
leonardleonard
  • 浏览: 812228 次
社区版块
存档分类
最新评论

设计模式C#描述——抽象工厂模式

阅读更多
设计模式C#描述——抽象工厂模式



阅读此文应先阅读简单工厂模式与工厂方法模式

抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广。

假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产品等级结构。那么为了将消费这些产品对象的责任和创建这些产品对象的责任分开,可以引进抽象工厂模式。这样的话,消费产品的客户不需要直接参与产品的创建工作,而只需要向一个公用的工厂接口请求所需要的产品。



抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用接口或抽象类实现。

具体工厂角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。通常使用具体的类实现。

抽象产品角色:担任这个角色的类是抽象工厂方法模式所创建的对象的父类,或它们共同拥有的接口。通常使用接口或抽象类实现这一角色。

具体产品角色:抽象工厂模式所创建的任何产品对象都是某一具体产品类的实例。这是客户端最终需要的东西。通常使用具体类实现这个角色。

下面给出这个系统的原代码:



Creator:

public interface Creator

{

ProductA factoryA();

ProductB factoryB();

}



ConcreteCreator1:

public class ConcreteCreator1:Creator

{

public ProductA factoryA()

{

return new ProductA1();

}

public ProductB factoryB()

{

return new ProductB1();

}

}



ConcreteCreator2:

public class ConcreteCreator2:Creator

{

public ProductA factoryA()

{

return new ProductA2();

}

public ProductB factoryB()

{

return new ProductB2();

}

}



ProductA:

public interface ProductA

{

}



ProductA1:

public class ProductA1:ProductA

{

public ProductA1()

{

}

}



ProductA2:

public class ProductA2:ProductA

{

public ProductA2()

{

}

}



ProductB:

public interface ProductB

{

}



ProductB1:

public class ProductB1:ProductB

{

public ProductB1()

{

}

}



ProductB2:

public class ProductB2:ProductB

{

public ProductB2()

{

}

}

在以下情况下应该使用抽象工厂模式:

一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。

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

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

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

相关推荐

    设计模式C#描述之——简单工厂模式

    ### 设计模式C#描述之——简单工厂模式 #### 知识点概述 简单工厂模式是一种常用的设计模式,属于创建型模式之一。该模式的主要目的是为了封装产品对象的创建过程,将这一过程从客户端分离出来,使客户端无须关心...

    c#工厂模式——简单工厂,抽象工厂,单件模式实例

    C#中的工厂模式分为简单工厂、抽象工厂和单例模式三种,每一种都有其特定的应用场景和优势。 1. **简单工厂模式**: 简单工厂模式是一种静态工厂方法,它创建一个具体的对象而无需暴露创建逻辑。在C#中,我们可以...

    软件设计模式——抽象工厂

    抽象工厂模式是一种重要的软件设计模式,它属于创建型模式,主要解决的是当系统需要创建一系列相关或相互依赖的对象时,而这些对象的类在运行时可能不确定的问题。在这个模式中,我们通过一个抽象工厂接口来定义创建...

    c#工厂模式——简单工厂_抽象工厂实例

    ### C#工厂模式详解——简单工厂与抽象工厂实例解析 #### 一、工厂模式概述 工厂模式是一种常用的设计模式,在面向对象编程中被广泛应用于创建对象。它通过提供一个统一的接口来创建一系列相关的或相互依赖的对象...

    设计模式C#实例——大洋系统

    "设计模式C#实例——大洋系统"这个主题涵盖了五个经典的设计模式:抽象工厂(Abstract Factory)、适配器(Adapter)、桥接(Bridge)、建造者(Builder)以及责任链(Chain of Responsibility)。接下来,我们将...

    实验二 简单工厂模式.zip_31QS_C#_设计模式——简单工厂模式_设计模式实验

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了客户端代码与具体产品类之间的耦合度。在本实验中,我们将深入理解和应用C#语言实现简单工厂模式。 简单工厂模式的...

    C#抽象工厂实例,设计模式

    设计模式 源码! 优点 l 分离了具体的类。抽象工厂模式帮助你控制一个应用创建的对象的类,因为一个工厂封装创建产品对象的责任和过程。它将客户和类的实现分离,客户通过他们的抽象接口操纵实例,产品的类名也在...

    c#设计模式-工厂模式

    《C#设计模式——工厂模式详解》 工厂模式是一种常用的设计模式,它的主要目的是通过抽象出产品创建过程,使得客户端代码不再直接new对象,而是通过工厂来获取对象,从而降低了代码之间的耦合度,提高了系统的可...

    设计模式代码——c#

    C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器...

    深入浅出设计模式(中文版电子版)

    3.3AbstractFactoryPattern(抽象工厂模式) 45 3.3.1定义 45 3.3.2现实例子——扩展了的兵工厂 48 3.3.3C#实例——大陆生态系统 49 3.3.4Java实例——电脑产品 52 3.3.5优势和缺陷 57 3.3.6应用情景 57 3.4...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)_《0528》.rar

    《设计模式--基于C#的工程化实现及扩展》是一本深入探讨软件设计模式的书籍,作者王翔通过C#语言来阐述各种设计模式的工程化应用和拓展。设计模式是软件开发中的一种最佳实践,它总结了在特定场景下解决常见问题的...

    设计模式——刘伟

    分为简单工厂、工厂方法和抽象工厂三种类型。 3. **观察者模式**:定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在事件驱动编程中广泛使用,例如GUI组件...

    GOF设计模式C#加强版

    ### GOF设计模式C#加强版 #### 一、设计模式概述 设计模式是面向对象软件设计中一系列已知问题的有效解决方案集。它不仅有助于解决软件设计中的常见挑战,还能促进代码的可读性和可维护性。设计模式的核心在于描述...

    抽象工厂设计模式code

    在C#中,抽象工厂设计模式通常包含以下几个关键组件: 1. 抽象工厂(Abstract Factory):这是模式的核心,定义了一组用于创建相关或依赖对象的接口。在C#中,这通常是一个接口或抽象类,它不包含任何具体实现,只...

    设计模式(C#)

    本文将深入探讨《设计模式——C#语言实现》这一主题,聚焦于设计模式的基本概念、分类以及具体的实现方式,特别关注抽象工厂模式在C#中的应用。 ### 设计模式概述 设计模式是一种在软件设计中反复出现的解决方案,...

    设计模式 C#的工程化实现及扩展 书及代码

    微软示例数据库脚本可能用于配合某些设计模式的实现,例如数据访问层的设计,而设计模式——基于C#的工程化实现及扩展_示例说明.txt则会详细解释这些示例代码的工作原理和设计思路。 通过学习和实践这些设计模式,...

    六层架构 三层架构 C# 抽象工厂应用 实例

    本文将深入探讨两种常见的架构模式——六层架构和三层架构,并结合C#编程语言以及抽象工厂设计模式,展示它们在实际项目中的应用。 首先,让我们从六层架构开始。六层架构是一种将软件系统分解为六个独立层次的方法...

    C#设计模式-工厂模式

    ### C#设计模式——工厂模式详解 #### 一、引言 在软件开发过程中,对象的创建是一个常见的任务。然而,随着需求的变化,这些对象的具体实现可能会经历较大的改动。为了解决这一问题,并确保系统的其他部分不受这些...

    23种设计模式之C#版本.pdf

    在本文中,将详细探讨23种设计模式中的两种——单件模式(Singleton Pattern)和抽象工厂模式(Abstract Factory Pattern),并以C#语言为例来阐述其在实际开发中的应用和实现。 ### 单件模式(Singleton Pattern)...

Global site tag (gtag.js) - Google Analytics