策略模式,ASP.NET实现

策略模式,ASP.NET实现

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 /// <summary>
 7 ///Class1 的摘要说明
 8 /// </summary>
 9 interface  Iface
10 {
11     int Calation(int a, int b);
12     
13 }
14 public class Add:Iface
15 {
16     public int Calation(int a,int b)
17     {
18         return a+b;
19     }
20 }
21 public class Sub : Iface
22 {
23     public int Calation(int a, int b)
24     {
25         return a - b;
26     }
27 }
28 public class Mul : Iface
29 {
30     public int Calation(int a, int b)
31     {
32         return a * b;
33     }
34 }
35 public class Div : Iface
36 {
37     public int Calation(int a, int b)
38     {
39         if (b == 0)
40         {
41             throw new Exception("除数不能为零!");
42 
43         }
44 
45         else
46         {
47             return a / b;
48         }
49         
50     }
51 }
52 public class Faction
53 {
54     private Iface iface;
55     public Faction(string operation)
56     {
57         switch (operation)
58         {
59             case "+":
60                 iface = new Add();
61                 break;
62             case "-":
63                 iface = new Sub();
64                 break;
65             case "*":
66                 iface = new Mul();
67                 break;
68             case "/":
69                 iface = new Div();
70                 break;
71         }
72     }
73     public int Calationss(int a, int b)
74     {
75         return iface.Calation(a, b);
76  
77     }
78 }

Default.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ti();
        }
    }
    public void ti()
    {
        Random rd = new Random();
        TextBox1.Text = rd.Next(1, 100).ToString();
        TextBox2.Text = rd.Next(1, 100).ToString();
        string[] oper = new string[] { "+", "-", "*", "/" };
        Random rdd = new Random();
        Label1.Text = oper[rdd.Next(1, 4)];
 
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Faction faction = new Faction(Label1.Text);
        int a = int.Parse(TextBox1.Text);
        int b = int.Parse(TextBox2.Text);
        string anster = faction.Calationss(a, b).ToString();
        if (TextBox3.Text == anster)
        {
            Response.Write("回答正确!");
        }
        else
        {
            Response.Write("回答错误!");
        }
        TextBox3.Text = "";
        ti();
    }
}

测试

第一题做的是不是正确,在第二题中提示。

posted @ 2015-12-14 11:16  Kayle_zhao  阅读(503)  评论(2编辑  收藏  举报