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


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

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

    ///


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

            ///
            ///
            ///
            ///
            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();

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

  • 相关阅读:
    全球与中国板上芯片LED行业发展规模及投资前景预测报告2022-2028年
    自研长链接压测概览
    GO逃逸分析
    2022年千元半入耳式蓝牙耳机,高性价比蓝牙耳机推荐
    Linux用户权限切换
    30行python代码实现“代码雨”
    动态样式绑定--style 和 class
    KT6368A双模蓝牙芯片串口与mcu之间串接的电阻以及电平转换说明
    【C++】数组和指针的爱恨情仇。。。
    docker下redis备份文件dump.rdb获取
  • 原文地址:https://blog.csdn.net/yangdayededaye/article/details/126478172