ASP.NET中实现封装与策略模式
首先把运算方法封装起来,这样在网页界面中直接就可以调用了,不过是换张脸而已!
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中实现封装与策略模式的更多相关文章
- 封装,策略模式,Asp换脸
1.简单封装 1>计算类 using System; using System.Collections.Generic; using System.Linq; using System.Text ...
- JavaScript中的设计模式:策略模式
无论学习前端还是后端设计模式是作为一名程序员不可缺少的知识,就像下底传中对于一个边锋来说. 一.策略模式 策略模式给人的第一感觉就是在代码里面消除了很多if-else分支语句,比如一个求员工奖金的程序 ...
- 在C#中理解和实现策略模式的绝对入门教程
介绍 本文的目的是理解战略模式的基础知识,并试图了解何时可以使用,并有一个基本的实现,以便更好地理解.在现实世界的应用中,这是无法实施战略模式的,所采用的例子也远没有实际可行.这篇文章的想法只是为了说 ...
- springboot项目中使用设计模式一策略模式
策略模式: 使用常用,支付,之前做了微信支付,支付宝支付,然后另外一个同事写了一个银联支付,那么如果代码方法一起就会导致代码不是很好操作所以,采用策略模式进行,同事只需要写一个实现类,就可以了, 在协 ...
- Spring中常见的设计模式——策略模式
策略模式(Strategy Pattern) 一.策略模式的应用场景 策略模式的应用场景如下: 系统中有很多类,而他们的区别仅仅在于行为不同. 一个系统需要动态的在集中算法中选择一种 二.用策略模式实 ...
- 23中java设计模式(1)-- 策略模式
近来不太忙,就打算抽空看下源码补充一下知识,当我看了之后我发现看源码的关键是要弄清楚类之家的关系以及为何要这样的关系,否则如果只看具体的代码那不如去学习会儿算法. 于是就打算从设计模式入手,边学习边记 ...
- ASP.net四则运算《《《策略模式
Calculator.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; / ...
- 在商城系统中使用设计模式----策略模式之在spring中使用策略模式
1.前言: 这是策略模式在spring中的使用,对策略模式不了解对同学可以移步在商城中简单对使用策略模式. 2.问题: 在策略模式中,我们创建表示各种策略的对象和一个行为,随着策略对象改变而改变的 c ...
- JAVA 设计模式之策略模式
定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换. 类型:行为类模式 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换.在前面说过 ...
随机推荐
- Xamarin 编写混合APP趟坑记录(二)
前言 公司要开发一个App,为了便于维护和更新,而不用每次去苹果审核,采用的是混合开发方式:用WebVie+WebApp的方式. 因为本人不会Java和ObjectC,公司又不想花钱招这两个岗位的人, ...
- window.open 防止浏览器拦截
https://blog.csdn.net/sinat_37255207/article/details/89374416 网上试了很多方法 最终只有一种可以 var newWin = window. ...
- #leetcode刷题之路39-组合总和
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合.candidates 中的数字可以无限制重复被选取 ...
- 逻辑卷管理-LVM(Logical Volume Manager)
一. 概念与由来 LVM:逻辑卷管理(Logical Volume Manager) 普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某文件时,这个文件因为受上层文件 ...
- linux学习第十七天(NFS、AUTOFS文件共享配置,DNS配置)
一.NFS(网络文件系统,实现linux系统上文件共享) 服务器配置 yum install nfs-utils (安装NFS软件包) iptables -F (清空防火墙) service ip ...
- Vmware 下安装linux虚拟机
由于想自己玩玩linux系统,就想着装一个linux的虚拟机,虚拟机vmware很好找,也很好用,但是linux镜像安装老是出问题,然后就找了很多版本的,最后实验成功一种,在这里分享给大家. 一.安装 ...
- vue父组件为子组件传值传不过去?vue为数组传值,不能直接用等于的方式,要用循环加push的方式
父组件为子组件传值不成功,子组件拿不到值,不能直接赋值,要用循环加push的方式赋值.
- redis 基本数据类型-列表(List)
今天不瘦给大家分享一下redis第二个基本数据类型:列表.如果大家了解基本数据结构,相信大家对列表不会陌生,比如在C语言中我们可以使用数组实现一个列表,也可以使用链表实现一个列表(列表链表傻傻分不清楚 ...
- ubuntu终端下快捷键之--字体放大缩小
1.快捷键 Ctrl - 字体缩小 Ctrl + (有的电脑是“Ctrl Shift +” 三个按键同时按下)字体放大 Ctrl 0 恢复默认字体 2.终端设置默认字体 在终端下,点击右键- ...
- 安装OpenLDAP步骤
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL杂记页 回到顶级页面:PostgreSQL索引页 [作者 高健@博客园 luckyjackgao@gmail. ...