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

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. PHP切割字符用到的explode 以及计数count

    在thinkphp中同样可以用 explode来进行字符的切割工作,比如 $jihe='1,2,3,4'; 在使用explode之后,可以获得一个数组: $array=explode(',',$jih ...

  2. delphi7 TRichView 安装

    下载: 链接: https://pan.baidu.com/s/1gfMYeGF 密码: 45bn 打开目录:E:\Delphi7\TRichView.v.16.10.3 ScaleRichView. ...

  3. docker 下 mysql 集群的搭建

    下载程序&&创建docker容器 从mysql官网https://dev.mysql.com/downloads/cluster/上下载mysql集群库mysql-cluster-gp ...

  4. flex作图

    <?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="htt ...

  5. vue-cli打包后,图片路径不对

    在config文件夹下的 index.js 里面,查找build,在builid方法里面,添加一行:assetsPublicPath: './' 例: 在build文件夹下的utils.js里面,查找 ...

  6. java随记

    jdk1.8中新增了 LocalDate 与 LocalDateTime等类来解决日期处理方法,同时引入了一个新的类DateTimeFormatter来解决日期格式化问题. LocalDateTime ...

  7. xshell提示评估过期怎么办?

    刚刚打开xshell准备连上虚拟机写代码,结果提示评估过期,真的很气,在百度上找了好久才找到解决办法,现在分享给大家:. 1.复制这个链接在浏览器打开https://www.netsarang.com ...

  8. numpy技巧

    矩阵旋转: mat_array = np.array([[1,2],[4,3]]) rotate_90 = np.zeros((2,2), np.uint8) rotate_180 = np.zero ...

  9. tomcat 项目的搭建-【Linux】

  10. 6.把建模工具导出的dea文件导入到three.js程序中

    1.使用Three.js渲染导出的DAE 在Three.js中使用Collada(即.dae)文件的话,首先得要用到 ColladaLoader.js. 但是这个ColladaLoader.js并不包 ...