zoukankan      html  css  js  c++  java
  • 大话设计模式读书笔记1——简单工厂模式

    最近几日,重温了一下《大话设计模式》这本书,当时读的仓促,有很多没有注意的地方,现在仔细翻看起来,发现这值得细细品味的一本书!!

    好东西就要记下来!!!

    第一章笔记:从一个简单的计算器程序来看简单工厂模式。

    变化的地方就要封装,用一个单独的类来做创造实例的过程这就是工厂。

    UML图:

        /// <summary>
        /// 运算类
        /// </summary>
        public class Operation
        {
            public double Number1 { get; set; }
    
            public double Number2 { get; set; }
    
            public virtual double GetResult()
            {
                double result = 0;
                return result;
            }
        }
        /// <summary>
        /// 加法类
        /// </summary>
        public class OprerationAdd : Operation
        {
            public override double GetResult()
            {
                double reslut = 0;
                reslut = Number1 + Number2;
                return reslut;
            }
        }
    
        /// <summary>
        /// 减法类
        /// </summary>
        public class OprerationSub : Operation
        {
            public override double GetResult()
            {
                double reslut = 0;
                reslut = Number1 - Number2;
                return reslut;
            }
        }
    
        /// <summary>
        /// 乘法类
        /// </summary>
        public class OprerationMul : Operation
        {
            public override double GetResult()
            {
                double reslut = 0;
                reslut = Number1 * Number2;
                return reslut;
            }
        }
    
        /// <summary>
        /// 除法类
        /// </summary>
        public class OprerationDiv : Operation
        {
            public override double GetResult()
            {
                double reslut = 0;
                if (Number2==0)
                {
                    throw new Exception("除数不能等于0");
                }
                reslut = Number1 / Number2;
                return reslut;
            }
        }

    运算工厂类:

    public class OperationFactory
        {
            public static Operation CreateOperate(string oper)
            {
                Operation operation = null;
                switch (oper)
                {
                    case "+":
                        operation = new OprerationAdd();
                        break;
                    case "-":
                        operation = new OprerationSub();
                        break;
                    case "*":
                        operation = new OprerationMul();
                        break;
                    case "/":
                        operation = new OprerationDiv();
                        break;
                }
                return operation;
            }
        }

    客户端代码:

       public partial class FrmMain : Form
        {
            public FrmMain()
            {
                InitializeComponent();
                this.cbxOper.SelectedIndex = 0;         
            }     
            
            /// <summary>
            /// 运算点击
            /// </summary> 
            private void btnCompute_Click(object sender, EventArgs e)
            {
                double num1 = 0;
                double num2 = 0;
                if (!double.TryParse(this.txtNum1.Text,out num1))
                {
                    this.lblInfo.Text = "请输入正确的数字";
                    this.txtNum1.Focus();
                    return;
                }
    
                if (!double.TryParse(this.txtNum2.Text, out num2))
                {
                    this.lblInfo.Text = "请输入正确的数字";
                    this.txtNum2.Focus();
                    return;
                }
    
                Operation operation = null;
                operation = OperationFactory.CreateOperate(this.cbxOper.Text);
                operation.Number1 = num1;
                operation.Number2 = num2;
                double ret = operation.GetResult();
                this.txtResult.Text = ret.ToString();
            }
        }

    界面显示:

    -=源码下载=-

  • 相关阅读:
    值得学习的东西
    【单调队列】转载
    dom基础3 — 简易版template.js
    js基础6 — 数组对象
    js基础6 — 字符串基本操作
    js基础5 — 将十六进制颜色转为rgba()
    js基础4 — 数组操作
    placeholer属性修改
    clipboard.js实现复制到剪切板
    JS 获取指定日期在当年的第几周
  • 原文地址:https://www.cnblogs.com/lxblog/p/3915162.html
Copyright © 2011-2022 走看看