【设计模式&C#】抽象工厂模式(将工厂方法模式中的工厂实现类升级成能够生成多种产品的工厂)

发布于:2025-07-29 ⋅ 阅读:(20) ⋅ 点赞:(0)
一种创建型设计模式。

特点:在工厂方法模式拥有的特点下,适合需要管理多个相互依赖的产品系列时使用。

优缺点参考工厂方法模式。

适用场景(包括了工厂方法模式适用场景):

以及适合需要生产多种相互依赖的系列产品。

示例:

/// <summary>
/// 动物接口
/// </summary>
public interface IAnimal
{
    void Speak();
}
/// <summary>
/// 玩具接口
/// </summary>
public interface IToy
{
    void Play();
}
/// <summary>
/// 动物实现类
/// </summary>
public class Dog1 : IAnimal
{
    public void Speak()
    {
        Debug.Log("汪汪汪");
    }
}
public class Cat1 : IAnimal
{
    public void Speak()
    {
        Debug.Log("喵喵喵");
    }
}
/// <summary>
/// 玩具实现类
/// </summary>
public class DogToy : IToy
{
    public void Play()
    {
        Debug.Log("和小狗玩具玩");
    }
}
public class CatToy : IToy
{
    public void Play()
    {
        Debug.Log("和小猫玩具玩");
    }
}
/// <summary>
/// 抽象的工厂接口类
/// </summary>
public interface IAnimalFactory
{
    IAnimal CreateAnimal();
    IToy CreateToy();
}
/// <summary>
/// 小狗工厂实现类
/// </summary>
public class DogFactory : IAnimalFactory
{
    public IAnima CreateAnimal()
    {
        return new Dog();
    }

    public IToy CreateToy()
    {
        return new DogToy();
    }
}
/// <summary>
/// 小猫工厂实现类
/// </summary>
public class CatFactory : IAnimalFactory
{   
    public IAnimal CreateAnimal()
    {
        return new Cat();
    }

    public IToy CreateToy()
    {
        return new CatToy();
    }
}
/// <summary>
/// 客户端
/// </summary>
public class Client
{
    public static void Main(string[] args)
    {
        IAnimalFactory dogFactory = new DogFactory();
        IAnimal dog = dogFactory.CreateAnimal();
        IToy dogToy = dogFactory.CreateToy();
        dog.Speak();
        dogToy.Play();


        IAnimalFactory catFactory = new CatFactory();
        IAnimal cat = catFactory.CreateAnimal();
        IToy catToy = catFactory.CreateToy();
        cat.Speak();
        cat.Play();
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到