首页 > 其他 > 详细

设计模式:简单工厂

时间:2014-02-09 15:35:47      阅读:329      评论:0      收藏:0      [点我收藏+]

实现目标:实现计算器功能,要求输入两个数和运算符号,得到结果。

效果图bubuko.com,布布扣

HTML代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Simple Factory Demo</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtNumA" runat="server" Width="50px"></asp:TextBox>
        <asp:DropDownList ID="ddlOperateType" runat="server">
            <asp:ListItem Selected="True">+</asp:ListItem>
            <asp:ListItem>-</asp:ListItem>
            <asp:ListItem>*</asp:ListItem>
            <asp:ListItem>/</asp:ListItem>
        </asp:DropDownList>
        <asp:TextBox ID="txtNumB" runat="server" Width="50px"></asp:TextBox>
        <asp:Button ID="btnGetResult" runat="server" Text="=" OnClick="btnGetResult_Click" />
        <asp:TextBox ID="txtResult" runat="server" Width="50px"></asp:TextBox>
        <asp:Label ID="lblMessage" runat="server" ForeColor="Red"></asp:Label>
    </div>
    </form>
</body>
</html>

  

结构图

bubuko.com,布布扣

运算类

bubuko.com,布布扣
 /// <summary>
    /// Operation 运算类
    /// </summary>
    public class Operation
    {
        public double NumberA { get; set; }

        public double NumberB { get; set; }

        public virtual double GetResult()
        {
            return 0;
        }
View Code

减加乘除类

bubuko.com,布布扣
/// <summary>
    /// 加法类
    /// </summary>
    public class OperateAdd : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;

            return result;
        }

    }

    /// <summary>
    /// 减法类
    /// </summary>
    public class OperateSub : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA - NumberB;

            return result;
        }

    }

    /// <summary>
    /// 乘法类
    /// </summary>
    public class OperateMul : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA * NumberB;

            return result;
        }
    }

    /// <summary>
    /// 除法类
    /// </summary>
    public class OperateDiv : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            if (NumberB == 0)
                throw new Exception("被除数不能为0");
            result = NumberA / NumberB;

            return result;
        }
    }
View Code

简单工厂类

bubuko.com,布布扣
 /// <summary>
    /// 简单运算工厂类
    /// </summary>
    public class OperationFactory
    {       
        public static Operation CreateOperate(string operate)
        {
            Operation oper = null;

            switch (operate)
            {
                case "+":
                    oper = new OperateAdd();
                    break;
                case "-":
                    oper = new OperateSub();
                    break;
                case "*":
                    oper = new OperateMul();
                    break;
                default:
                    oper = new OperateDiv();
                    break;
            }

            return oper;
        }
    }
View Code

客户端代码:

bubuko.com,布布扣
protected void btnGetResult_Click(object sender, EventArgs e)
        {
            lblMessage.Text = "";

            try
            {
                Operation opeation;
                opeation = OperationFactory.CreateOperate(ddlOperateType.SelectedValue);
                opeation.NumberA = Convert.ToDouble(txtNumA.Text);
                opeation.NumberB = Convert.ToDouble(txtNumB.Text);

                double result = opeation.GetResult();

                txtResult.Text = result.ToString();
            }
            catch (Exception ex)
            {
                lblMessage.Text = ex.Message;
            }
        }
View Code

设计模式:简单工厂

原文:http://www.cnblogs.com/qianxingdewoniu/p/3540497.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!