首页 > 技术文章 > 四则运算《《《代码封装 策略模式

thinking-star 2015-11-29 15:37 原文

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace sum
 7 {
 8     class Class1
 9     {
10         public interface Calculator        //声明计算接口
11         {
12             double Cal(double x, double y);
13         }
14         private double x;                //定义x变量;
15 
16         public double X                  //封装字段
17         {
18             get { return x; }
19             set { x = value; }
20 
21         }
22         private double y;               //定义y变量
23 
24 
25         public double Y                  //封装字段
26         {
27             get { return y; }
28             set { y = value; }
29 
30         }
31         public class Add : Calculator            //接口法运算
32         {
33             public double Cal(double x, double y)
34             {
35                 double result = 0;
36                 result = x + y;
37                 return result;
38             }
39         }
40         public class Sub : Calculator 
41         {
42             public double Cal(double x, double y)
43             {
44                 double result = 0;
45                 result = x - y;
46                 return result;
47             }
48         }
49         public class Mul : Calculator 
50         {
51             public double Cal(double x, double y)
52             {
53                 double result = 0;
54                 result = x * y;
55                 return result;
56             }
57         }
58         public class Div : Calculator  
59         {
60             public double Cal(double x, double y)
61             {
62                 double result = 0;
63                 result = x / y;
64                 return result;
65             }
66         }
67         public class Opear                  //定义运算符  
68         {
69             private Calculator calculate;
70             public Opear(Calculator calculate)
71             {
72                 this.calculate = calculate;
73             }
74             public double Cal(double x, double y, String op)  //返回运算结果
75             {
76                 return this.calculate.Cal(x, y);
77             }
78         }
79     }
80 }

策略模式引用:

 1  private void textBox8_KeyDown(object sender, KeyEventArgs e)
 2         {
 3             sum.Class1.Opear opear = null;
 4             double x = Convert.ToDouble(textBox5.Text); //为相关的变量赋值
 5             double y = Convert.ToDouble(textBox7.Text);
 6             string op = textBox6.Text;
 7             switch (op)
 8             {
 9                 case "+":
10                      opear = new  sum.Class1.Opear(new sum.Class1.Add()); //策略模式的引用
11                     break;
12                 case "-":
13                     opear = new sum.Class1.Opear(new sum.Class1.Sub());
14 
15                     break;
16                 case "*":
17                     opear = new sum.Class1.Opear(new sum.Class1.Mul());
18 
19                     break;
20                 case "/":
21                     opear = new sum.Class1.Opear(new sum.Class1.Div());
22 
23                     break;
24                 default:
25                     break;
26             }
27             
28             if (e.KeyCode == Keys.Enter)
29             {
30                 string answer = opear.Cal(x, y, op).ToString();
31                 if (textBox8.Text ==answer.ToString())
32                 {
33                     MessageBox.Show("回答正确");
34                     Count++;
35                     Right++;
36                 }
37                 else
38                 {
39                     MessageBox.Show("回答错误");
40                     Count++;
41                 }

 

运行结果:

保存出好的题

 

 

 

 

 

 

 

 

推荐阅读