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


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

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

    ///


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

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

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

  • 相关阅读:
    如何成为一个全栈数字化设计师
    SpringBoot集成图数据库neo4j实现简单的关联图谱
    kube-scheduler 抢占机制
    HBuilder X 导入git项目以及拉取和推送
    问题:react函数中的state是上一次的值
    LabVIEW开发带式谱感测技术
    国家开放大学2024年春《民法学(2)-陕西》形考任务1234参考答案
    [TAPL] 概念笔记
    解决 Element的el-input 密码输入框浏览器自动填充账号密码问题
    Unity中用序列化和反序列化来保存游戏进度
  • 原文地址:https://blog.csdn.net/yangdayededaye/article/details/126478172