C#——简单工厂

简单工厂的方法实现过程核心就是之前介绍的接口应用。所以直接上代码:

public interface IPerson { void Say(); }

public class Student : IPerson
{
    public void Say()
    {
        Console.WriteLine("我是学生....");
    }
}

public class Teacher : IPerson
{
    public void Say()
    {
        Console.WriteLine("我是老师...."); ;
    }
}

上面创建了一个规划(接口)IPerson,要求有一个Say的方法。类Student、Teacher都继承于这个规范。下面是简单工厂的核心。依据P_Type的类型创建不同的实例类。

public enum P_Type
{
    学生, 老师
}

public class Factory
{
    public IPerson GetSay(P_Type p_type)
    {
        switch (p_type)
        {
            case P_Type.学生: return new Student();
            case P_Type.老师: return new Teacher();
            default: throw new Exception("什么都不是..");
        }
    }
}

客户端的调用:

static void Main(string[] args)
{
    IPerson ip;
    try
    {
        Factory fc = new Factory();
        ip = fc.GetSay(P_Type.学生);
        ip.Say();
        Console.ReadKey();
    }
    catch (Exception ex)
    {

        Console.WriteLine(ex.Message);
    }
}

这次调用的时候我们给的条件是P_Type.学生,也就是我们需要创建Student类的实例。那么有个问题是下次再修改的时候,不仅需要扩充我们的类,而且我们还需要修改主程序的代码。个人感觉,修改高层的代码(主程序)风险是非常大的,所以为了更加模块化,单一化,便于后期修改,我们又提炼了简单工厂,将工厂抽象化,这就是工厂模式,后面讲会介绍。

参考:详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)

原文地址:https://www.cnblogs.com/wuqiuxue/p/7693715.html