首页 > 代码库 > 【设计模式】 简单工厂,工厂方法,抽象工厂

【设计模式】 简单工厂,工厂方法,抽象工厂

 一. 简单工厂

  1. 通过 switch 判断,创建对应的类型实例

  2. 代码

  

        public static CalBase GetCal(string oper)
        {
            switch (oper)
            {
                case "+":
                    return new CalAdd();
                case "=":
                    return new CalSub();
                case "*":
                    return new CalMul();
                case "/":
                    return new CalDiv();
                default:
                    return null;
            }
        }

二. 工厂方法
  1. 由对应的工厂来创建对象

  2. 与简单工厂相比,代码设计复杂度提高了,调用也变得复杂了,但维护成本降低了,每次添加新的类时,只要添加对应的工厂,而不需要修改原有代码。 简单工厂每次添加新的类,需要修改原有创建对象的方法。

  3. 代码  

    public interface IFactory    {        CalBase CreateCal();    }    public class AddFactory : IFactory    {        public CalBase CreateCal()        {            return new CalAdd();        }    }    public class SubFactory : IFactory    {        public CalBase CreateCal()        {            return new CalSub();        }    }    public class MulFactory : IFactory    {        public CalBase CreateCal()        {            return new CalMul();        }    }    public class DivFactory : IFactory    {        public CalBase CreateCal()        {            return new CalDiv();        }    }

三. 通过 反射 来简化工厂

  

  

 

 

 

 

  

【设计模式】 简单工厂,工厂方法,抽象工厂