大话设计模式读书笔记1——简单工厂模式

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

好东西就要记下来!!!

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

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

UML图:

大话设计模式读书笔记1——简单工厂模式

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

        }

    }

界面显示:

大话设计模式读书笔记1——简单工厂模式

-=源码下载=-

 

你可能感兴趣的:(简单工厂模式)