涉及事件开发应用委托

昨天Insus.NET有写了一篇《ASP.NET的简单与面向对象开发http://www.cnblogs.com/insus/p/4146503.html。以当时的想法,只能如此的水准,有网友说应该是使用状态设计模式,但Insus.NET想到这个案例没有使用到状态的设计模式。

反而想到开关有两个事件,就是开与关。下面Insus.NET决定重构这个Switch类,改用委托来实现。

一个普通的电源开关,是让我们开做什么,关做什么,它虽有内置功能实现,正常来说也应该有外置功能。

前一篇中,是靠关开的属性来获取输出参数,使用事件委托之后,是靠两个事件开与关来获取参数。


因此创建一个RunEventArgs类,它继承了EventArgs基类。

 

Ok,现在我们去重构Switch类:

 

用红线删除无用代码,分别添加标记1至3部分代码。标记1就是宣街告一个委托delegate和两个事件Event。标记2和标记3分别在两个事件传出参数。

 
接下来重构Default2.aspx.cs,需要在这里实现Switch类中两个事件:



在实现两个事件,获取开关输出的参数:

 

本重构中,我们学习到使用委托,e传递参数。责任分清,是属性是事件。

 
下面是asp.net事件与委托相关:
用户控件(UserControl) 使用事件http://www.cnblogs.com/insus/archive/2011/11/16/2251314.html
事件接口http://www.cnblogs.com/insus/archive/2011/12/12/2284382.html
网页(aspx)与用户控件(ascx)交互与逻辑处理http://www.cnblogs.com/insus/archive/2013/03/09/2951161.html
观察者模式与用户控件之间的互动http://www.cnblogs.com/insus/archive/2011/12/10/2283142.html

 

posted @ 2014-12-06 14:56  Insus.NET  阅读(914)  评论(0编辑  收藏  举报