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 }

运行截图:

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

原文地址:https://www.cnblogs.com/yumaster/p/4989706.html