ASP.NET开发,一开始是为了超赶时间完成任务,只能把功能实现即可。如下面一个功能,在网页中有一个铵钮,用户点一点切换网页的图片,再点一点又切换回来。
我们要怎样做?在铵钮事件中去变更图片的路径即可。

这个例子,Insus.NET找到两张图片,图片来自《ASP.NET的适配器设计模式(Adapter)http://www.cnblogs.com/insus/archive/2013/02/04/2891426.html 。
铵钮也参考了《关于母版页的按钮事件http://www.cnblogs.com/insus/archive/2012/03/09/2387829.html 
和《用户控件如何控制ASPX页面的控件http://www.cnblogs.com/insus/archive/2012/04/16/2451664.html 。

OK,把两张图片放在站点下,并创建一个网页,如Default.aspx:

在Default.aspx.cs的Button1_Click事件:

演示:

你是这样开发吗?很简单吧,很快就可以完成并提交开发任务了吧。 你会说:不,用javascript和jQuery实现更快,更好效率,更好维护。Insus.NET想说的是javascript和jQuery不在此讨论范围。我们需要讨论的是ASP.NET开发。

下面Insus.NET使用面向对象来开发,先在Default.aspx改写一些:

此时我们可以把图片看当一个对象Light,创建一个类:

我们不可能把灯接到一个常开的线电路中去,即是说,需要在电路中安装一个开关。用户给这个开关一个“开”还是“关”的指令。因此还要创建一个对象Switch类:

两个对象Light和Swtich完成了,现在来看看xxx.aspx.cs的铵钮事件怎样实现:

再次演示:

本例全部实现完成,运用了面向对象开发 ,两个类中实际上有使用了中介者设计模式和内部一些协作进行封装。

演示源代码可从下面链接下载(Default是重构前,Default2是重构后):
http://download.cnblogs.com/insus/Refactoring/mediator_refactor_OO.rar

ASP.NET的简单与面向对象开发的更多相关文章

  1. (0)ASP.NET Core 简单介绍 和开发环境搭建 - ASP.NET从MVC5升级到MVC6

    ASP.NET从MVC5升级到MVC6 总目录 ASP.NET Core 首先,ASP原本只是一种技术,这种技术从上个世纪90年代就有了. Active Service Page 和 Java Ser ...

  2. Java面向对象编程 第一章 面向对象开发方法概述

    一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...

  3. Java面向对象 第一章 面向对象开发方法概述

    一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...

  4. (读书笔记)Asp.net Mvc 与WebForm 混合开发

    根据项目实际需求,有时候会想在项目中实现Asp.net Mvc与Webform 混合开发,比如前台框架用MVC,后台框架用WebForm.其实要是实现也很简单,如下: (1)在MVC 中使用Webfo ...

  5. Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter

    前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接 ...

  6. ASP.NET MVC (Razor)开发

    ASP.NET MVC (Razor)开发 过去我们使用过一些周报工具来完成项目组或部门的周报填写与考核工作,但多少有些不理想,要么功能太过简单,要么功能特别繁杂,不接地气,使用不便. 后来我们就考虑 ...

  7. ASP.NET MVC4简单使用ELMAH记录系统日志

    ASP.NET MVC4简单使用ELMAH记录系统日志 前言 在项目开发.测试以及已经上线的项目中都会存在bug,而如果我们在项目的各个阶段都能及时的监控系统出现的任何问题,那么对于我们开发人员来说完 ...

  8. LBPL--基于Asp.net、 quartz.net 快速开发定时服务的插件化项目

    LBPL 这一个基于Asp.net. quartz.net 快速开发定时服务的插件化项目 由于在实际项目开发中需要做定时服务的操作,大体上可以理解为:需要动态化监控定时任务的调度系统. 为了实现快速开 ...

  9. 在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持

    HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单.统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable ...

随机推荐

  1. <欧奈尔制胜法则—如何在股市中赚钱>读书笔记

    在选择个股建仓时,要选择那些在最近季度报表中,每股收益比上年同期要有较大增幅的股票. 每股收益是指公司税后净利润除以公司普通股的总股本 选择年增长率为25%--50%的公司 年度盈利和季度盈利都要出色 ...

  2. android:layout_weight

    layout_weight 用于给一个线性布局中的诸多视图的重要度赋值. 所有的视图都有一个layout_weight值,默认为零,意思是需要显示多大的视图就占据多大的屏幕空 间.若赋一个高于零的值, ...

  3. 太阳升起并下落的小动画-SWIFT

    一个小小的动画,太阳公公上山又下山.先上效果图. 用 lipecap 录的gif效果有点卡顿.好吧,说下如何实现的. 首先在一个大圆内先计算出内切九边形各个顶点的位置,接着连接相应的顶点变成一个九角星 ...

  4. WWDC2016-session401-CodeSign大改版

    自动签名机制和手动签名都明显看起来很好用. 自动签名有log 手动签名有具体的错误提示信息. session401 Xcode Signing. 亲,你的眼睛好大 相声演员吗? Yeah,You ar ...

  5. <img> to image_tag

    <img src="clean_wave.jpg?" alt="Clean_wave"><%= image_tag("clean_w ...

  6. iOS开发问题之Could not instantiate class named NSLayoutConstraint

    这个问题在ios6.0之前的版本中运行会出现,因为使用Xcode 4.5之后的版本新建项目默认是选中AutoLayout的,但这个特性是在iOS6.0之后的版本中才支持的. 解决办法是选中.stroy ...

  7. apache 配置反向代理服务器

    前几天实验了下 nginx 配置反向代理服务器.虽然 nginx 的安装很麻烦,但是用起来倒是很简单.不过组里没人用过 nginx,apache 服务器大家倒是蛮熟,为了减少 ops team 的工作 ...

  8. [LeetCode] Number of Islands II

    Problem Description: A 2d grid map of m rows and n columns is initially filled with water. We may pe ...

  9. SetHandleInformation设置内核对象标志

    当父进程创建子进程时,子进程将继承父进程的内核对象.这时如果要控制子进程使用父进程的内核对象.可以使用 SetHandleInformation设置. BOOL SetHandleInformatio ...

  10. 使用SQL联合查询来构建临时vo对象的应用

    联合查询: 表1: team球队表 表2:schedule 赛程表 需要数据: 球队名称.主队ID.主队名称.客队ID.客队名称.胜负情况 方法1. Object数组取出列和数值 import jav ...