简易的工厂设计模式

简易,工厂,设计模式 · 浏览次数 : 305

小编点评

**工厂模式**是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露对象的创建逻辑。 **工厂方法模式**使类的实例化延迟到其子类。 **C#工厂模式示例** ```csharp public interface IAnimal { void Speak(); } public class Dog : IAnimal { public void Speak() { Console.WriteLine("狗说:汪,汪"); } } public class Cat : IAnimal { public void Speak() { Console.WriteLine("猫说:喵。"); } } public class AnimalFactory { public IAnimal GetAnimal(string animalType) { switch (animalType.ToLower()) { case "dog": return new Dog(); case "cat": return new Cat(); default: throw new ArgumentException("无效动物型"); } } } public class Client { private IFactory factory; public Client(IFactory factory) { this.factory = factory; } public void UseProduct() { IAnimal product = factory.GetAnimal("dog"); product.Speak(); } } ``` **使用示例** ```csharp // 创建工厂 AnimalFactory animalFactory = new AnimalFactory(); // 创建产品 IAnimal dog = animalFactory.GetAnimal("dog"); // 使用产品 dog.Speak(); // 创建另一个产品 IAnimal cat = animalFactory.GetAnimal("cat"); // 使用另一个产品 cat.Speak(); ``` **输出** ``` 狗说:汪,汪 猫说:喵。 ```

正文

工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露对象的创建逻辑。在工厂模式中,我们定义一个接口或抽象类,该接口或抽象类用于创建对象,但让子类决定要实例化的类。工厂方法模式使类的实例化延迟到其子类。

下面是一个完整的C#实现案例:

首先,我们定义一个接口,用于创建对象:

public interface IAnimal
{
    void Speak();
}

然后,我们定义两个实现该接口的类:

public class Dog : IAnimal
{
    public void Speak()
    {
        Console.WriteLine("狗说:汪,汪");
    }
}

public class Cat : IAnimal
{
    public void Speak()
    {
        Console.WriteLine("猫说:喵。");
    }
}

接下来,我们定义一个工厂类,该类根据传入的参数创建相应的对象:

public class AnimalFactory
{
    public IAnimal GetAnimal(string animalType)
    {
        switch (animalType.ToLower())
        {
            case "dog":
                return new Dog();
            case "cat":
                return new Cat();
            default:
                throw new ArgumentException("无效动物型");
        }
    }
}

最后,我们可以使用工厂类来创建对象:

AnimalFactory animalFactory = new AnimalFactory();

IAnimal dog = animalFactory.GetAnimal("dog");
dog.Speak(); // 输出:狗说:汪汪

IAnimal cat = animalFactory.GetAnimal("cat");
cat.Speak(); // 输出:猫说:喵

在这个例子中,我们使用工厂类来创建不同类型的动物对象,而不需要暴露对象的创建逻辑。这使得我们可以轻松地添加新的动物类型,而不需要修改现有的代码。

以下是一个抽象工厂的C#示例:

// 抽象产品接口
public interface IProduct
{
    void Use();
}

// 具体产品A
public class ProductA : IProduct
{
    public void Use()
    {
        Console.WriteLine("使用产品A");
    }
}

// 具体产品B
public class ProductB : IProduct
{
    public void Use()
    {
        Console.WriteLine("使用产品B");
    }
}

// 抽象工厂接口
public interface IFactory
{
    IProduct CreateProduct();
}

// 具体工厂A
public class FactoryA : IFactory
{
    public IProduct CreateProduct()
    {
        return new ProductA();
    }
}

// 具体工厂B
public class FactoryB : IFactory
{
    public IProduct CreateProduct()
    {
        return new ProductB();
    }
}

// 客户端代码
public class Client
{
    private IFactory factory;

    public Client(IFactory factory)
    {
        this.factory = factory;
    }

    public void UseProduct()
    {
        IProduct product = factory.CreateProduct();
        product.Use();
    }
}

// 使用示例
Client clientA = new Client(new FactoryA());
clientA.UseProduct(); // 输出:使用产品A

Client clientB = new Client(new FactoryB());
clientB.UseProduct(); // 输出:使用产品B

在这个示例中,抽象工厂接口 IFactory 定义了一个 CreateProduct 方法,用于创建产品。具体工厂 FactoryAFactoryB 实现了 IFactory 接口,并分别创建了具体产品 ProductAProductB。客户端代码 Client 接收一个工厂对象,并使用工厂对象创建产品并使用。这样,客户端代码就可以通过更换工厂对象来创建不同的产品。

与简易的工厂设计模式相似的内容:

简易的工厂设计模式

工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露对象的创建逻辑。在工厂模式中,我们定义一个接口或抽象类,该接口或抽象类用于创建对象,但让子类决定要实例化的类。工厂方法模式使类的实例化延迟到其子类。 下面是一个完整的C#实现案例: 首先,我们定义一个接口,用于创建对象: p

设计模式-C#实现简单工厂模式

前言 上一篇文章写了如何使用RabbitMQ做个简单的发送邮件项目,然后评论也是比较多,也是准备去学习一下如何确保RabbitMQ的消息可靠性,但是由于时间原因,先来说说设计模式中的简单工厂模式吧! 在了解简单工厂模式之前,我们要知道C#是一款面向对象的高级程序语言。它有3大特性,封装、继承、多态。

【23种设计模式】工厂方法模式(二)

## 前言 在讲述之工厂方法模式前,我们来先了解简单工厂模式,简单工厂模式是最简单的设计模式之一,它虽然不属于GoF的23种设计模式,但是应用也较为频繁,同时它也是学习其他创建型模式的基础。下面我们来先了解下简单工厂模式,然后针对它的缺点来引出工厂方法模式。 ## 简单工厂模式定义 **简单工厂模式

设计模式学习(二)工厂模式——抽象工厂模式+注册表

目录前言使用简单工厂改进使用注册表改进参考文章 前言 在上一篇文章中我们提到了抽象工厂模式初版代码的一些缺点:①客户端违反开闭原则②提供方违反开闭原则。本文将针对这两点进行讨论 使用简单工厂改进 对于缺点①,我们可以使用简单工厂的思路来改进抽象工厂的初版代码。对于上一篇文章中的例子,我们去除Came

Simple Factory 简单工厂模式简介与 C# 示例【创建型3.1】【设计模式来了_3.1】

本文通过简单的实例对简单工厂模式进行了介绍。

软件设计模式系列之四——简单工厂模式

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,用于对象的创建,它属于工厂模式的一种。简单工厂模式的主要目标是封装对象的创建过程,使客户端代码与具体类的实例化解耦,从而提高代码的可维护性和可扩展性。

Abstract Factory 抽象工厂模式简介与 C# 示例【创建型1】【设计模式来了_1】

通过对抽象类和抽象工厂的一组实现,独立出一系列新的操作,客户端无需了解其逻辑直接访问。

设计模式学习(三):工厂模式

设计模式学习(三):工厂模式 作者:Grey 原文地址: 博客园:设计模式学习(三):工厂模式 CSDN:设计模式学习(三):工厂模式 工厂模式 工厂模式是创建型模式,工厂模式分为:简单工厂,工厂方法和抽象工厂三种类型。 简单工厂 这个模式很简单,比如我们需要制造不同类型的鼠标,我们只需要创建一个鼠

设计模式之简单工厂模式(学习笔记)

定义 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它定义一个用于创建对象的接口,但由一个单独的类来实现实际创建的工作。简单工厂模式通过在一个类中集中管理对象的创建过程,可以减少客户端与具体类之间的耦合,使得代码结构更加清晰和易于维护。通过专门定义一个类来负责创建

Factory Method 工厂方法模式简介与 C# 示例【创建型3】【设计模式来了_3】

本文通过实例介绍了工厂方法模式的用法。