您的位置:首页 > 编程语言 > C#

C#设计模式——抽象工厂模式(Abstract Factory Pattern)

2012-02-07 16:51 585 查看
一、概述
在软件开发中,常常会需要创建一系列相互依赖的对象,同时,由于需求的变化,往往存在较多系列对象的创建工作。如果采用常规的创建方法(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();
}


抽象工厂模式在实际应用中比较广泛,我们可以通过依赖注入的方式传递抽象工厂,并利用反射读取配置文件中关于具体工厂的信息,达到在不修改代码的情况下改变实际产品的目的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: