C#设计模式——抽象工厂模式(Abstract Factory Pattern)
2012-02-07 16:51
585 查看
一、概述
在软件开发中,常常会需要创建一系列相互依赖的对象,同时,由于需求的变化,往往存在较多系列对象的创建工作。如果采用常规的创建方法(new),会造成客户程序和对象创建工作的紧耦合。对此,抽象工厂模式提供了一种解耦手段。
二、抽象工厂模式
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
抽象工厂模式的结构图如下:
AbstractFactory声明了一个创建抽象产品对象的操作接口。
ConcreteFactory实现了创建具体产品对象的操作。
AbstractProduct为一类产品对象声明一个接口。
ConcreteProduct实现AbstractProduct接口,定义一个将被相应的具体工厂创建的产品对象。
Client使用AbstractFactory和AbstractProduct声明的接口。
三、示例
我们以实现一个汽车工程为例来看一个简单的抽象工厂的例子。
首先定义抽象工厂
接着实现两个具体的汽车工厂
最后看一下如何调用
抽象工厂模式在实际应用中比较广泛,我们可以通过依赖注入的方式传递抽象工厂,并利用反射读取配置文件中关于具体工厂的信息,达到在不修改代码的情况下改变实际产品的目的。
在软件开发中,常常会需要创建一系列相互依赖的对象,同时,由于需求的变化,往往存在较多系列对象的创建工作。如果采用常规的创建方法(new),会造成客户程序和对象创建工作的紧耦合。对此,抽象工厂模式提供了一种解耦手段。
二、抽象工厂模式
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
抽象工厂模式的结构图如下:
AbstractFactory声明了一个创建抽象产品对象的操作接口。
ConcreteFactory实现了创建具体产品对象的操作。
AbstractProduct为一类产品对象声明一个接口。
ConcreteProduct实现AbstractProduct接口,定义一个将被相应的具体工厂创建的产品对象。
Client使用AbstractFactory和AbstractProduct声明的接口。
三、示例
我们以实现一个汽车工程为例来看一个简单的抽象工厂的例子。
首先定义抽象工厂
public abstract class CarFactory { public abstract void CreateWindows(); public abstract void CreateWheels(); }
接着实现两个具体的汽车工厂
public class BenzFactory : CarFactory { public override void CreateWindows() { Console.WriteLine("Create Benz Windows"); } public override void CreateWheels() { Console.WriteLine("Create Benz Wheels"); } } public class BMWFactory : CarFactory { public override void CreateWindows() { Console.WriteLine("Create BMW Windows"); } public override void CreateWheels() { Console.WriteLine("Create BMW Wheels"); } }
最后看一下如何调用
static void Main(string[] args) { CarFactory carFactory = new BenzFactory(); carFactory.CreateWindows(); carFactory.CreateWheels(); Console.WriteLine("Change Factory To BMWFactory"); carFactory = new BMWFactory(); carFactory.CreateWindows(); carFactory.CreateWheels(); Console.ReadLine(); }
抽象工厂模式在实际应用中比较广泛,我们可以通过依赖注入的方式传递抽象工厂,并利用反射读取配置文件中关于具体工厂的信息,达到在不修改代码的情况下改变实际产品的目的。
相关文章推荐
- 设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- C#设计模式——抽象工厂模式(Abstract Factory Pattern)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式学习总结-抽象工厂模式(Abstract Factory Pattern)
- c++设计模式:抽象工厂模式(Abstract Factory Pattern)
- C#设计模式(6)-Abstract Factory Pattern
- 设计模式——抽象工厂模式(AbstractFactoryPattern)
- 解读设计模式----抽象工厂模式(AbstractFactory Pattern)
- 设计模式 - Abstract Factory Pattern(抽象工厂模式)
- 设计模式--2: Net设计模式实例之抽象工厂模式(Abstract Factory Pattern)
- C#设计模式(6)-Abstract Factory Pattern
- [创建型模式系列]Abstract factory of Design Pattern模式设计之抽象工厂模式
- 设计模式 - Abstract Factory Pattern(抽象工厂模式)
- C#设计模式(6)-Abstract Factory Pattern
- 设计模式之八S:抽象工厂模式(Abstract Factory Pattern)
- c++设计模式:抽象工厂模式(Abstract Factory Pattern)
- C#设计模式(1)-Abstract Factory Pattern