设计模式(C#)-创建型模式-简单工厂模式

本文详细介绍了C#中的简单工厂模式,包括其组成部分(抽象产品接口、具体产品类、工厂类和客户端)、工作流程,以及在实际代码中的应用示例。
摘要由CSDN通过智能技术生成

设计模式(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}");
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值