首先把运算方法封装起来,这样在网页界面中直接就可以调用了,不过是换张脸而已!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; /// <summary>
///jisuan 的摘要说明
/// </summary>
public abstract class jisuanqi //抽象类
{
public abstract int jisuan(int left, int right);//抽象方法
}
public class jia : jisuanqi //加法类继承抽象类
{
public override int jisuan(int left, int right)//重写抽象方法
{
int jieguo = 0;
jieguo = left + right;
return jieguo;
}
}
public class jian : jisuanqi
{
public override int jisuan(int left, int right)
{
int jieguo = 0;
jieguo = left - right;
return jieguo;
}
}
public class cheng : jisuanqi
{
public override int jisuan(int left, int right)
{
int jieguo = 0;
jieguo = left * right;
return jieguo;
}
}
public class chu : jisuanqi
{
public override int jisuan(int left, int right)
{
int jieguo = 0;
jieguo = left / right;
return jieguo;
}
}
public class Context//上下文
{
private jisuanqi jsq = null;//基类引用对象
public Context(jisuanqi jsp)
{
this.jsq = jsp; //派生类对象jsp赋给基类对象jsq
}
public int jisuan(int left, int right, string fuhao)
{
return this.jsq.jisuan(left,right);
}
}

界面后台代码:

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)
{ }
protected void jisuan_Click(object sender, EventArgs e)
{
string fuhao = DropDownList1.SelectedItem.ToString();
int left = Convert.ToInt32(TextBox1.Text);
int right = Convert.ToInt32(TextBox2.Text);
Context contex = null;
if (DropDownList1.SelectedIndex == 1)
{
contex = new Context(new jia());
}
else if (DropDownList1.SelectedIndex == 2)
{
contex = new Context(new jian());
}
else if (DropDownList1.SelectedIndex == 3)
{
contex = new Context(new cheng());
}
else if (DropDownList1.SelectedIndex == 4)
{
contex = new Context(new chu());
}
string daan = contex.jisuan(left,right,fuhao).ToString(); string result = TextBox1.Text + DropDownList1.SelectedItem.ToString() + TextBox2.Text;
if (TextBox3.Text == daan)
{
Response.Write("回答正确!");
} else
{
Response.Write("回答错误!");
}
}
}

运行测试:

答对有提示回答正确:

答错提示回答错误:

ASP.NET中实现封装与策略模式的更多相关文章

  1. 封装,策略模式,Asp换脸

    1.简单封装 1>计算类 using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  2. JavaScript中的设计模式:策略模式

    无论学习前端还是后端设计模式是作为一名程序员不可缺少的知识,就像下底传中对于一个边锋来说. 一.策略模式 策略模式给人的第一感觉就是在代码里面消除了很多if-else分支语句,比如一个求员工奖金的程序 ...

  3. 在C#中理解和实现策略模式的绝对入门教程

    介绍 本文的目的是理解战略模式的基础知识,并试图了解何时可以使用,并有一个基本的实现,以便更好地理解.在现实世界的应用中,这是无法实施战略模式的,所采用的例子也远没有实际可行.这篇文章的想法只是为了说 ...

  4. springboot项目中使用设计模式一策略模式

    策略模式: 使用常用,支付,之前做了微信支付,支付宝支付,然后另外一个同事写了一个银联支付,那么如果代码方法一起就会导致代码不是很好操作所以,采用策略模式进行,同事只需要写一个实现类,就可以了, 在协 ...

  5. Spring中常见的设计模式——策略模式

    策略模式(Strategy Pattern) 一.策略模式的应用场景 策略模式的应用场景如下: 系统中有很多类,而他们的区别仅仅在于行为不同. 一个系统需要动态的在集中算法中选择一种 二.用策略模式实 ...

  6. 23中java设计模式(1)-- 策略模式

    近来不太忙,就打算抽空看下源码补充一下知识,当我看了之后我发现看源码的关键是要弄清楚类之家的关系以及为何要这样的关系,否则如果只看具体的代码那不如去学习会儿算法. 于是就打算从设计模式入手,边学习边记 ...

  7. ASP.net四则运算《《《策略模式

    Calculator.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; / ...

  8. 在商城系统中使用设计模式----策略模式之在spring中使用策略模式

    1.前言: 这是策略模式在spring中的使用,对策略模式不了解对同学可以移步在商城中简单对使用策略模式. 2.问题: 在策略模式中,我们创建表示各种策略的对象和一个行为,随着策略对象改变而改变的 c ...

  9. JAVA 设计模式之策略模式

    定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换. 类型:行为类模式 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换.在前面说过 ...

随机推荐

  1. elasticserach 索引删除 源码分析

    索引的构成 在看IndicesService服务中移除索引的前提,先了解一个Index类的构成,也就是索引的一些基本信息,代码贴图如下:   主要的信息就两个:一个是name,表示索引名称,一个是uu ...

  2. WPF实现MDI窗体的方法

    原文:WPF实现MDI窗体的方法 第一:新建一个类(Class) Win32Native.cs 代码如下: using System;  using System.Collections.Generi ...

  3. Autovacuum 的运行限制

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页 作者:高健@博客园  luckyjackgao ...

  4. jQuery学习-自定义动画

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 5285: [Hnoi2018]寻宝游戏

    5285: [Hnoi2018]寻宝游戏 链接 分析: 从下面依次确定运算符号,然后在确定的过程中,需要确定的位数会逐渐减少.比如最后有一个1,如果在从下往上确定了一个or 1,那么再往前可以随便选了 ...

  6. spark-client 一直 accepted,无法提交任务,报错Failed to connect to driver at

    这个问题的原因有几个: 1.客户端安装的机器一般是虚拟机,虚拟机的名称可能是随便搞的,然而,yarn-client模式提交任务,是默认把本机当成driver的.所以导致其他的机器无法通过host的na ...

  7. Windows:打开MSDTC,恢复Windows任务栏,查看windows日志,打开远程桌面,打开Services,资源监控

    Windows 服务器系列: Windows:查看IP地址,IP地址对应的机器名,占用的端口,以及占用该端口的应用程 Windows:使用Dos命令管理服务(Services) Windows:任务调 ...

  8. SpringBoot日记——Thymeleaf进阶小篇

    我们做好了登录页,那设计一个场景吧,比如我们登录后跳转到公司主页,想从公司主页再跳转到员工列表页: 这样的场景我们该如何实现,首先要知道一些基础知识,就是SpringBoot的一些关于请求的架构知识: ...

  9. MySQL5.7(二)数据库的基本操作

    登录MySQL数据库 格式:mysql -u 用户名 -h 主机名或IP地址  -P 端口号 -p 密码

  10. ubuntu/linux中安装Tomcat(附图解详细步骤)

    我的linux系统使用的是ubuntu14 1.首先需要先到Tomcat官网上下载对应linux系统的压缩包,可以直接在Ubuntu系统中进行下载,下载后的默认路径为主文件夹路径下的下载文件目录下 注 ...