【设计模式】简单工厂模式

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

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

/// <summary>
        /// 实现加减乘除运算的方法
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        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;
        }

使用简单工厂模式如下:

/// <summary>
        /// 基类
        /// </summary>
        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;
            }
        }
        /// <summary>
        /// 工厂类
        /// </summary>
        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();

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值