• 设计模式-简单工厂模式


    本处以实现加减乘除来作为例子演示下简单工厂模式的运用

    首先在不使用任何设计模式时如下:

    ///


            /// 实现加减乘除运算的方法
            ///

            ///
            ///
            ///
            ///
            public static double CalFunc(double a,double b,string type)
            {
                double c = 0;
                switch (type)
                {
                    case "+":
                        c = a + b;
                        break;
                    case "-":
                        c = a - b;
                        break;
                    case "*":
                        c = a * b;
                        break;
                    case "/":
                        c = a / b;
                        break;
                }
                return c;
            }

    使用简单工厂模式如下:

    ///


            /// 基类
            ///

            public class Cal
            {
                private double a;

                public double A
                {
                    get { return a; }
                    set { a = value; }
                }

                private double b;

                public double B
                {
                    get { return b; }
                    set { b = value; }
                }

                public virtual double Operate()
                {
                    double result = 0;

                    return result;
                }

            }

            public class CalAdd : Cal
            {
                public override double Operate()
                {
                    return A + B;
                }
            }
            public class CalSub : Cal
            {
                public override double Operate()
                {
                    return A - B;
                }
            }
            public class CalMulti : Cal
            {
                public override double Operate()
                {
                    return A * B;
                }
            }
            public class CalDiv : Cal
            {
                public override double Operate()
                {
                    return A / B;
                }
            }
            ///


            /// 工厂类
            ///

            public class CalFactory
            {
                public static Cal GetCalResult(string type)
                {
                    Cal cal = null;
                    switch (type)
                    {
                        case "+":
                            cal = new CalAdd();
                            break;
                        case "-":
                            cal = new CalSub();
                            break;
                        case "*":
                            cal = new CalMulti();
                            break;
                        case "/":
                            cal = new CalDiv();
                            break;
                    }
                    return cal;
                }
            }

    调用方式如下:

    Cal c=CalFactory.GetCalResult("+");

    c.A=3;

    c.B=2;

    double result = c.Operate();

    总结:定义一个工厂类并实现静态的方法根据输入的参数返回具体的对象类

  • 相关阅读:
    BUCK LX_OUT Snubber电路
    大厂炸锅了!这份全程无尿点的 Java 彩版面试开挂攻略在 GitHub 火了
    【Python自动化办公】分享几个好用到爆的模块,建议收藏
    vue3中使用全局自定义指令和组件自定义指令
    Golang高级数据结构
    多线程基础篇
    Java 获得任意一个时间的 下一天的时间
    面试官: 有了解过线程池的工作原理吗?说说看
    远程服务器上,再次配笔记1、2、11、12相同的深度学习和gcc环境
    外汇天眼:外汇投资小白必读! 4大外汇交易常见提问释疑
  • 原文地址:https://blog.csdn.net/yangdayededaye/article/details/126478172