yidabu 2007-4-27 19:45
DFL框架分析2 事件订阅
DFL框架分析2 事件订阅知识若不分享 实在没有意义 http://www.d-programming-language-china.org 20070427点击下面网址查看原文:http://www.d-programming-language-china.org by: ideage from: http://ideage.javaeye.com/?page=1 关键字: DFL 事件 订阅 设计模式 观察者 DFL中的事件订阅(module dfl.event,dfl.control) 一.EventArgs类: 事件参数祖先,传递事件的参数组合,可以进行继承实现更多的参数. 二.Event 模版 1.接受两个模版参数, 2.重载了操作符: opCatAssign ~ 增加. opCall 调用 opApply foreach调用 三.例子 控件本身: 1.声明可以订阅事件 [Copy to clipboard] [ - ]CODE: Event!(Control, EventArgs) click; 2.事件处理函数( 本文出处: http://www.d-programming-language-china.org ) [Copy to clipboard] [ - ]CODE: protected void onClick(EventArgs ea) { click(this, ea); } 3.处理Window的事件消息,触发事件. [Copy to clipboard] [ - ]CODE: protected void wndProc(inout Message msg) { switch(msg.msg) { case WM_LBUTTONUP: onClick(EventArgs.empty); } } 使用控件过程: 4.发生事件要执行的函数. [Copy to clipboard] [ - ]CODE: private void bt_click(Object sender, EventArgs ea) {} 5.订阅事件. [Copy to clipboard] [ - ]CODE: bt.click ~= &bt_click ; 四.启示 observer模式的一个好例子. 在D的运行库Phobos中,std.signals 也实现了observer模式.( lastupdate:20070427 最新文章请访问http://www.d-programming-language-china.org )关于一大步成功社区:yidabu提倡在交流中学习,在分享中提高收集感兴趣的知识,写下心得,通过网络与别人一起分享理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台