昨天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