
C#实现GoF工厂方法模式详细解析
下载需积分: 3 | 24KB |
更新于2025-04-16
| 196 浏览量 | 举报
收藏
工厂方法模式(Factory Method Pattern)是软件开发中的一种常用的设计模式,它属于创建型模式的一种,用来封装对象的创建过程。工厂方法模式通过定义一个用于创建对象的接口,让子类来决定实例化哪一个类,使得创建对象和使用对象分离,从而降低代码之间的耦合度。
工厂方法模式的结构通常包含以下几个角色:
1. **抽象产品(Product)**:定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品对象所实现的接口或必须实现的抽象类。
2. **具体产品(Concrete Product)**:实现了抽象产品接口的具体类,每一个具体产品都对应一个具体工厂。
3. **抽象工厂(Creator)**:声明工厂方法,该方法返回一个产品类型的对象,工厂方法的返回类型通常被声明为抽象产品类型。
4. **具体工厂(Concrete Creator)**:重写了抽象工厂中的工厂方法,返回一个具体产品类型的对象。
工厂方法模式的核心在于创建对象的任务由子类实现。这样做的好处有:
- 使创建和使用相分离,提高系统的可扩展性,降低类之间的耦合度;
- 客户端不需要知道具体产品的细节,只需要知道产品对应的工厂即可;
- 增加新的产品类时,不需要修改现有的系统代码,只需要添加一个具体的产品类以及对应的工厂类,符合开闭原则。
关于描述中提到的“简单工厂模式”和工厂方法模式的区别,简单工厂模式使用一个工厂类创建不同类型的对象,而工厂方法模式使用多个工厂类,每个工厂类只负责创建某一种类型的产品。这样,工厂方法模式在扩展新的产品时更加灵活。
实例中提到的“多文档系统”可能是一个应用场景,这可以是一个用户界面,其中不同的文档(产品)由不同的工厂(DocumentFactory)创建。在实际编程中,这样的系统可能包含一系列的文档对象(如Word文档、PDF文档等),每个文档工厂负责生产它自己的文档实例。
以下是一个简单的工厂方法模式在C#中的实现示例代码:
```csharp
// 抽象产品
public abstract class Product
{
public abstract void Use();
}
// 具体产品A
public class ConcreteProductA : Product
{
public override void Use()
{
Console.WriteLine("Using ConcreteProductA");
}
}
// 具体产品B
public class ConcreteProductB : Product
{
public override void Use()
{
Console.WriteLine("Using ConcreteProductB");
}
}
// 抽象工厂
public abstract class Factory
{
public abstract Product Create();
}
// 具体工厂A
public class ConcreteFactoryA : Factory
{
public override Product Create()
{
return new ConcreteProductA();
}
}
// 具体工厂B
public class ConcreteFactoryB : Factory
{
public override Product Create()
{
return new ConcreteProductB();
}
}
// 使用示例
class Program
{
static void Main(string[] args)
{
Factory factory = new ConcreteFactoryA();
Product product = factory.Create();
product.Use();
factory = new ConcreteFactoryB();
product = factory.Create();
product.Use();
}
}
```
在上述代码中,我们定义了抽象产品`Product`和两个具体产品`ConcreteProductA`与`ConcreteProductB`,同时定义了抽象工厂`Factory`和两个具体工厂`ConcreteFactoryA`与`ConcreteFactoryB`。通过`Factory`的`Create`方法创建相应的产品实例,并通过`Product`的`Use`方法来使用产品。
标签中的“GoF”指的是“Gang of Four”,即《设计模式:可复用面向对象软件的基础》一书的四位作者,该书首次系统地总结了设计模式,并广泛应用于软件工程领域。标签中的“FactoryMethodPatter”是工厂方法模式的英文拼写。
总结来说,工厂方法模式通过在父类中定义一个创建对象的抽象方法,并让子类决定实例化哪一个类,实现了一种解耦的方式,这种方式使得系统的扩展性增强,符合软件开发的开放-封闭原则。
相关推荐










Libearxiong
- 粉丝: 16
最新资源
- VC++实现WIN32网络路由选择器及其功能演示
- J2ME技术实现人物四向移动之Sprite精灵类应用
- 使用二进制浏览器高效浏览文件细节
- MySQL 5.1数据库技术参考手册详尽解析
- Oracle9i基础操作及RMAN使用指南
- 学生管理系统实现与功能详解
- 企业人力资源管理系统的JSP+SQL实现
- FoxitReaderPortable: 免安装超便捷PDF阅读器体验
- Visual Studio 2008 图像库资源指南
- 手机测试新手专用:掌握手机原理必读资料
- 基于Asterisk的Unibilling通信运营平台功能解析
- CuteEditor网页编辑器控件使用与示例解析
- 优化VC上传组件:增加错误处理与文件信息
- EVC4.9平台下CSliderCtrl与CSpinCtrl控件使用教程
- C#开发的OA考勤管理系统功能解析
- 信鸽unMSG普及版:免费高效的局域网即时通讯工具
- JavaScript封装日期时间控件
- Linux内核0.11源代码学习指南:探索Linux内核编程的起点
- 新闻发布系统开发实践:ASP.NET与SQL Server的结合
- VC环境下鼠标符号动态变化揭秘
- 网站管理员必备工具:流量分析与排名监控
- 三星SGH-X608制作12896来电大头贴方法
- 雪人兄弟小游戏趣味功能探索指南
- PHP 4完全中文手册 - 中文翻译的权威指南