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

一.介绍  

  简单工厂模式(Simple Factory Pattern)又叫静态工厂方法(Static Factory Method)模式。它属于创建型模式,但它不属于23种设计模式的一种。简单来说,它的作用就是将类的实例化交给一个工厂类去执行。

二.场景

  比如我们去水果店买水果,我们只要说出要买什么水果,水果店就会给我们什么水果。这里的水果店相当于一个工厂类,我们买水果就相当于new一个水果类,去水果店买水果就是交给水果店去new水果类,这可以降低我们对水果类对象的依赖,要什么类都交给工厂类去创建。

三.实现

  定义父类接口IFruit(水果)。

public interface IFruit
{
    public string Name { get; set; }
}

  子类继承水果接口。

public class Apple : IFruit
{
    public string Name { get; set; } = "苹果";
}

public class Orange : IFruit
{
    public string Name { get; set; } = "";
}

  定义工厂类,和负责实例化对应子类的静态方法。

public class Factory
{
    public static IFruit CreateFruit(FruitType type)
    {
        switch (type)
        {
            case FruitType.Apple:
                return new Apple();
            case FruitType.Orange:
                return new Orange();
            default:
                throw new Exception("没有水果");
        }
    }
}

public enum FruitType
{
    Apple = 1,
    Orange = 2
}

  根据不同参数去获取对应的实例。

public static void Main(string[] args)
{
    IFruit fruit = Factory.CreateFruit(FruitType.Apple);
    Console.WriteLine(fruit.Name);
}

 四.总结

  优点是,分离了实例的创建者和调用者,不让调用者直接去创建实例,而是通过工厂类去创建,明确了各自职责,有利于系统优化。

  缺点是,所有创建类的逻辑判断都放在工厂类中,如果需要创建新的类,那就只能去修改工厂类,这就违反了开闭原则,不应当修改底层类,应该通过拓展去加功能。

  所以,简单工厂模式一般是在需要创建的类不多的简单情况下使用。

  

posted @ 2021-01-05 10:28  shine声  阅读(440)  评论(0编辑  收藏  举报