zoukankan      html  css  js  c++  java
  • ASP.NET四则运算--工厂模式

    这次是在ASP.NET上实现四则运算,之前用策略模式实现了,所以这次想着用工厂模式实现一下。

    Calculator.cs

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 
     6 /// <summary>
     7 ///Calculator 的摘要说明
     8 /// </summary>
     9 public class Calculator
    10 {
    11     //
    12     //TODO: 在此处添加构造函数逻辑
    13     //
    14     private double a = 0;
    15     private double b = 0;
    16 
    17     public double A
    18     {
    19         get { return a; }
    20         set { a = value; }
    21     }
    22     public double B
    23     {
    24         get { return b; }
    25         set { b = value; }
    26     }
    27     public virtual double GetResult()
    28     {
    29         double result = 0;
    30         return result;
    31     }
    32     
    33 }
    34 
    35 class Add : Calculator
    36 {
    37     public override double GetResult()
    38     {
    39         double result = 0;
    40         result = A + B;
    41         return result;
    42     }
    43 }
    44 
    45 class Sub : Calculator
    46 {
    47     public override double GetResult()
    48     {
    49         double result = 0;
    50         result = A - B;
    51         return result;
    52     }
    53 }
    54 
    55 class Mul : Calculator
    56 {
    57     public override double GetResult()
    58     {
    59         double result = 0;
    60         result = A * B;
    61         return result;
    62     }
    63 }
    64 
    65 class Div : Calculator
    66 {
    67     public override double GetResult()
    68     {
    69         double result = 0;
    70         if (B == 0)
    71         throw new Exception("除数不能为0");
    72         result = A / B;
    73         return result;
    74     }
    75 }
    76 
    77 public class Factory
    78 {
    79     public static Calculator Cal(string operate)
    80     {
    81         Calculator oper = null;
    82         switch (operate)
    83         {
    84             case "+":
    85                 oper = new Add();
    86                 break;
    87             case "-":
    88                 oper = new Sub();
    89                 break;
    90             case "*":
    91                 oper = new Mul();
    92                 break;
    93             case "/":
    94                 oper = new Div();
    95                 break;
    96         }
    97         return oper;
    98     }
    99 }

    index.aspx.cs

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.Web.UI;
     6 using System.Web.UI.WebControls;
     7 
     8 public partial class index : System.Web.UI.Page
     9 {
    10     protected void Page_Load(object sender, EventArgs e)
    11     {
    12         //界面加载
    13     }
    14     protected void Cal_Click(object sender, EventArgs e)
    15     {
    16         Calculator oper;
    17         string strOperate = DropDownList1.SelectedItem.ToString();
    18         oper = Factory.Cal(strOperate);
    19         oper.A = Convert.ToDouble(TextBox1.Text);
    20         oper.B = Convert.ToDouble(TextBox2.Text);
    21         string answer = Convert.ToString(oper.GetResult());
    22 
    23         string result = TextBox1.Text + DropDownList1.SelectedItem.ToString() + TextBox2.Text;//把运算式子存在result里面
    24         if (TextBox3.Text == answer)                                  //如果输入答案与计算出的answer相等
    25         {
    26             Response.Write("<script>alert('回答正确!')</script>");          //弹出回答正确
    27             ListBox1.Items.Add(result + "=" + TextBox3.Text.Trim() + "");//并把运算式子存在listbox里
    28         }
    29 
    30         else                                                          //如果答错
    31         {
    32             Response.Write("<script>alert('答题错误!')</script>");           //弹出答题错误
    33             ListBox1.Items.Add(result + "=" + TextBox3.Text.Trim() + "×");//同样把运算式子放在listbox
    34         }
    35         TextBox1.Text = "";//把文本框清空,进行下一次出题
    36         TextBox2.Text = "";
    37         TextBox3.Text = "";  
    38     }
    39 }

    运行截图:

    工厂方法模式。用的地方不太合适!

  • 相关阅读:
    JQuery常用动画实现函数
    DOM对象和JQuery对象进行转换
    JQuery中的mouseover和mouseenter的区别
    JQuery使用和选择器
    LintCode 11 二叉查找树的搜索区间
    Java IO整理
    JS基础知识——缓动动画
    JS——无缝滚动
    Java GC系列(1):Java垃圾回收简介
    深入理解Java之线程池
  • 原文地址:https://www.cnblogs.com/yumaster/p/4989706.html
Copyright © 2011-2022 走看看