• 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类的实例。那么有个问题是下次再修改的时候,不仅需要扩充我们的类,而且我们还需要修改主程序的代码。个人感觉,修改高层的代码(主程序)风险是非常大的,所以为了更加模块化,单一化,便于后期修改,我们又提炼了简单工厂,将工厂抽象化,这就是工厂模式,后面讲会介绍。

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

  • 相关阅读:
    System.Web.Mvc.HttpHeadAttribute.cs
    System.Web.Mvc.HttpOptionsAttribute.cs
    System.Web.Mvc.HttpDeleteAttribute.cs
    sqlite-dbeaver-heidisql
    java实现圆周率
    java实现圆周率
    java实现圆周率
    java实现圆周率
    java实现圆周率
    java实现最近距离
  • 原文地址:https://www.cnblogs.com/wuqiuxue/p/7693715.html
Copyright © 2020-2023  润新知