设计模式(C#)
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
简单工厂模式
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
简单工厂模式是一种创建型设计模式,其主要目的是通过一个单一的工厂类来创建对象,而无需将对象的创建逻辑暴露给客户端。该模式属于工厂模式的一种,适用于创建一组相关对象的场景,但客户端不需要关心这些对象的具体类型。
以下是简单工厂模式的主要组成部分和工作流程:
1.组成部分:
a) 抽象产品接口(Product Interface): 定义了产品的共同接口或抽象类,规定了具体产品类应该实现的方法。
b)具体产品类(Concrete Products): 实现了抽象产品接口,是工厂创建的具体对象。
c) 工厂类(Factory Class): 包含一个工厂方法,根据客户端的需求创建并返回具体的产品对象。
d) 客户端(Client): 调用工厂类的方法来创建产品对象,而不直接与具体产品类交互。
2. 工作流程:
客户端通过调用工厂方法请求创建对象。
工厂类接收请求,根据传入的参数或条件,决定创建并返回哪个具体产品类的对象。
客户端获得具体产品对象后,可以使用其共同的接口或方法进行操作,而不需要了解具体对象的实现。
using System;
// 定义一个图形接口
public interface IShape
{
void Draw();
}
// 实现圆形类
public class Circle : IShape
{
public void Draw()
{
Console.WriteLine("Draw a Circle");
}
}
// 实现正方形类
public class Square : IShape
{
public void Draw()
{
Console.WriteLine("Draw a Square");
}
}
// 实现简单工厂类
public class ShapeFactory
{
// 工厂方法,根据传入的参数创建不同的图形对象
public static IShape CreateShape(string shapeType)
{
switch (shapeType.ToLower())
{
case "circle":
return new Circle();
case "square":
return new Square();
default:
throw new ArgumentException("Invalid shape type");
}
}
}
// 客户端代码
class Program
{
static void Main()
{
// 使用简单工厂创建圆形对象
IShape circle = ShapeFactory.CreateShape("circle");
circle.Draw();
// 使用简单工厂创建正方形对象
IShape square = ShapeFactory.CreateShape("square");
square.Draw();
// 尝试创建不存在的图形类型,将抛出异常
try
{
IShape invalidShape = ShapeFactory.CreateShape("triangle");
}
catch (ArgumentException ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}