简单工厂模式
简单工厂模式 (Simple Factory Pattern)
简单工厂模式是一种创建型设计模式,它定义了一个工厂类,用于创建对象而不需要暴露实例化逻辑。通过使用简单工厂模式,可以将对象创建的过程集中到一个地方,从而提高代码的可维护性和可扩展性。
结构
简单工厂模式包括以下几个部分:
1. **工厂类(Factory)**:提供创建对象的方法。
2. **产品接口(Product)**:定义产品的共同接口。
3. **具体产品(ConcreteProduct)**:实现产品接口的具体类。
类图
+-------------------+
| Factory |
|-------------------|
| + createProduct() |
+-------------------+
|
v
+-------------------+ +-------------------+
| Product |<------| ConcreteProduct |
|-------------------| |-------------------|
| + operation() | | + operation() |
+-------------------+ +-------------------+
示例代码
下面是一个简单工厂模式的示例代码,用于创建不同类型的图形对象。
using System;
namespace SimpleFactoryPattern
{
// 产品接口
public interface IShape
{
void Draw();
}
// 具体产品:圆形
public class Circle : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a Circle");
}
}
// 具体产品:矩形
public class Rectangle : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a Rectangle");
}
}
// 工厂类
public class ShapeFactory
{
public static IShape CreateShape(string shapeType)
{
switch (shapeType.ToUpper())
{
case "CIRCLE":
return new Circle();
case "RECTANGLE":
return new Rectangle();
default:
return null;
}
}
}
// 客户端代码
class Program
{
static void Main(string[] args)
{
IShape circle = ShapeFactory.CreateShape("CIRCLE");
circle?.Draw();
IShape rectangle = ShapeFactory.CreateShape("RECTANGLE");
rectangle?.Draw();
}
}
}
优点
- 简化对象创建:客户端不需要知道对象的创建细节。
- 集中管理:创建逻辑集中在一个地方,便于维护。
- 扩展性:可以通过修改工厂类来添加新产品。
缺点
- 单一职责:工厂类可能会承担过多的职责,违背单一职责原则。
- 不支持开放封闭原则:每次新增产品时,都需要修改工厂类。
适用场景
- 需要创建的对象数量不多。
- 客户端不关心对象的创建过程。
通过简单工厂模式,可以有效地管理对象的创建逻辑,使代码更清晰、更易于维护。尽管有一些缺点,但在合适的场景下,简单工厂模式仍然是一个非常有用的设计模式。
这个Markdown文件包括了简单工厂模式的定义、结构、类图、示例代码、优点、缺点和适用场景的描述,使用 .NET (C#) 实现了简单工厂模式。