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

Calculator.cs

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

 /// <summary>
 ///Calculator 的摘要说明
 /// </summary>
 public class Calculator
 {
     //
     //TODO: 在此处添加构造函数逻辑
     //
     ;
     ;

     public double A
     {
         get { return a; }
         set { a = value; }
     }
     public double B
     {
         get { return b; }
         set { b = value; }
     }
     public virtual double GetResult()
     {
         ;
         return result;
     }

 }

 class Add : Calculator
 {
     public override double GetResult()
     {
         ;
         result = A + B;
         return result;
     }
 }

 class Sub : Calculator
 {
     public override double GetResult()
     {
         ;
         result = A - B;
         return result;
     }
 }

 class Mul : Calculator
 {
     public override double GetResult()
     {
         ;
         result = A * B;
         return result;
     }
 }

 class Div : Calculator
 {
     public override double GetResult()
     {
         ;
         )
         throw new Exception("除数不能为0");
         result = A / B;
         return result;
     }
 }

 public class Factory
 {
     public static Calculator Cal(string operate)
     {
         Calculator oper = null;
         switch (operate)
         {
             case "+":
                 oper = new Add();
                 break;
             case "-":
                 oper = new Sub();
                 break;
             case "*":
                 oper = new Mul();
                 break;
             case "/":
                 oper = new Div();
                 break;
         }
         return oper;
     }
 }

index.aspx.cs

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

 public partial class index : System.Web.UI.Page
 {
     protected void Page_Load(object sender, EventArgs e)
     {
         //界面加载
     }
     protected void Cal_Click(object sender, EventArgs e)
     {
         Calculator oper;
         string strOperate = DropDownList1.SelectedItem.ToString();
         oper = Factory.Cal(strOperate);
         oper.A = Convert.ToDouble(TextBox1.Text);
         oper.B = Convert.ToDouble(TextBox2.Text);
         string answer = Convert.ToString(oper.GetResult());

         string result = TextBox1.Text + DropDownList1.SelectedItem.ToString() + TextBox2.Text;//把运算式子存在result里面
         if (TextBox3.Text == answer)                                  //如果输入答案与计算出的answer相等
         {
             Response.Write("<script>alert('回答正确!')</script>");          //弹出回答正确
             ListBox1.Items.Add(result + "=" + TextBox3.Text.Trim() + "√");//并把运算式子存在listbox里
         }

         else                                                          //如果答错
         {
             Response.Write("<script>alert('答题错误!')</script>");           //弹出答题错误
             ListBox1.Items.Add(result + "=" + TextBox3.Text.Trim() + "×");//同样把运算式子放在listbox
         }
         TextBox1.Text = "";//把文本框清空,进行下一次出题
         TextBox2.Text = "";
         TextBox3.Text = "";
     }
 }

运行截图:

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

最新文章

  1. JAVA基础篇NO2--Java中的基本命名规则及数据类型
  2. DLog的使用
  3. 使用C# WinForm窗体制作经理评分项目 ——S2 2.2
  4. C#配置文件管理
  5. bzoj1036
  6. sql语句中查询出的数据添加一列,并且添加默认值
  7. Java Class类以及获取Class实例的三种方式
  8. Java 序列化Serializable详解(附详细例子)
  9. 7. ZooKeeper的stat结构
  10. (十三)Batch Processing
  11. ES6你不知道的let关键字及变量的提升
  12. [Codeforces441E]Valera and Number
  13. 分布式之redis复习精讲
  14. Controller层aop
  15. c#Dapper 批量插入Mysql
  16. gitlab 数据同步
  17. beta阶段性能指标测试
  18. 地图上道路编号中的G S X Y
  19. 大数高精度计算库gmp简介
  20. networkManger介绍

热门文章

  1. 蒙地卡罗法求 PI
  2. Angularjs之controller 和filter(四)
  3. 【和小强学移动app测试2】移动终端app测试点归纳(持续更新)
  4. struts2 笔记04 杂记
  5. JSP直接连接sql2008数据库并显示
  6. 使用PowerDesigner生成Access数据库
  7. linux添加somebody到组
  8. [充电][ios]ios充电接口
  9. [vuforia][unity3d]资源链接
  10. 天大acm 题号1002 Maya Calendar