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


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

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

    ///


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

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

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

  • 相关阅读:
    MyBatis 基础用法详解
    九、MySql表的内连和外连(重点)
    Sa-Token 一个轻量级Java权限认证框架
    传统 Web 框架部署与迁移
    机器学习-ROC曲线:技术解析与实战应用
    在unity 2020 urp版本中实现 LensFlare功能
    详解欧拉计划第349题:兰顿的蚂蚁
    如何双开或多开skype
    【微服务】Day09
    [python 刷题] 刷题常用函数
  • 原文地址:https://blog.csdn.net/yangdayededaye/article/details/126478172