设计模式的简单应用【加减乘除】

最近在学习设计模式,就简单设计模式而言,看后我写了一个“加减乘除”的例子,分享给大家。


首先定义一个工厂类:

    public class OperatorFactory
    {
        public OperatorFactory()
        {
        }

        internal OperatorNumber GetStrings(string num1, string oper, string num2)
        {
            OperatorNumber obj;
            char c = char.Parse(oper);
            switch (c)
            {
                case '+': obj = new Jia(num1, num2); break;
                case '-': obj = new Jian(num1, num2); break;
                case '*': obj = new Cheng(num1, num2); break;
                case '/': obj = new Chu(num1, num2); break;
                default: obj = null; break;
            }
            return obj;
        }
    }

然后定义一个运算类:(一个基类,加减乘除分别继承)

    public class OperatorNumber
    {
        protected float x;
        protected float y;
        protected float r;
        
        public string GetResult()
        {
            return r.ToString();
        }
    }

    public class Jia : OperatorNumber
    {
        public Jia(string num1, string num2)
        {
            try
            {
                x = float.Parse(num1);
                y = float.Parse(num2);
                r = x + y;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
    }

    public class Jian : OperatorNumber
    {
        public Jian(string num1, string num2)
        {
            try
            {
                x = float.Parse(num1);
                y = float.Parse(num2);
                r = x - y;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
    }

    public class Cheng : OperatorNumber
    {
        public Cheng(string num1, string num2)
        {
            try
            {
                x = float.Parse(num1);
                y = float.Parse(num2);
                r = x * y;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
    }

    public class Chu : OperatorNumber
    {
        public Chu(string num1, string num2)
        {
            try
            {
                x = float.Parse(num1);
                y = float.Parse(num2);
                r = x / y;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
    }

然后在窗体中调用即可。

            OperatorFactory factory = new OperatorFactory();
            OperatorNumber obj = factory.GetStrings(txtNum1.Text, cbOper.Text, txtNum2.Text);
            txtRet.Text = obj.GetResult();

要实现加减乘除其实很简单,一般一个函数就可以做出来(简单修改一下GetStrings这个函数就可),这里只是想用简单的方式实现这个设计模式的思想。觉得确实不错。

我觉得设计模式看一下都不是问题,问题是如何将一个实际的问题转换为设计模式的思想,这个很重要。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值