无计划行为——C#委托实践二
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://wangjierui.blog.51cto.com/186879/42437 |
看过委托实践一的朋友如果还是觉得没有感觉的话,那么我们还可以通过委托另外一种应用来理解它,那就是今天要说的无计划行为,即方法的松耦合。这篇帖子可以结合设计模式中的“职责链”模式来理解,也许您可以通过委托简化职责链模式的设计。
通常我们实现一个事件的时候,都是将方法罗列在一起,比如
private void button1_Click(object sender, EventArgs e)
{ MessageBox.Show("1");
MessageBox.Show("2"); } 这样的方式有时候不能适应我们的要求。比如根据用户的选择,我们只让它执行“1”或“2”,当然,您可以通过判断条件实现。
bool UserSelect=false;
///用户选择,关闭“2”
private void button2_Click(object sender, EventArgs e)
{ this.UserSelect=true; } private void button1_Click(object sender, EventArgs e)
{ MessageBox.Show("1");
if(!this.UserSelect) MessageBox.Show("2");
} 那如果用户有多个选择,要设多少个开关?且不说实现复杂度,就这个条件来说,不管有没有选择都需要关照一下。下面我们请出今天的主角——委托,看它是如何实现上述需求的,有请!
private void Form1_Load(object sender, EventArgs e)
{ button1.Click+=new EventHandler(button2_Click);//实现弹出“1”“2” } private void button1_Click(object sender, EventArgs e)
{ MessageBox.Show("1"); } ///用户选择,关闭“2”
private void button2_Click_1(object sender, EventArgs e)
{ button1.Click -= new EventHandler(button2_Click);//将“2”摘掉 } 同样实现选择开关功能,如果用户有多个选择,多个行为的话,只要随需求往上“挂”功能就是了。
而且委托行为的实现,可以通过反射方法动态挂接,比用接口还要方便,在实现插件式开发程序大有作为。
到点了,我得上课去了,下次接着聊。 本文出自 “王杰瑞的技术博客” 博客,请务必保留此出处http://wangjierui.blog.51cto.com/186879/42437 本文出自 51CTO.COM技术博客 |



王杰瑞
博客统计信息
热门文章
最新评论
友情链接

