发新话题
打印

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.声明可以订阅事件

Event!(Control, EventArgs) click;

2.事件处理函数( 本文出处: http://www.d-programming-language-china.org )

protected void onClick(EventArgs ea)
    {
        click(this, ea);
    }

3.处理Window的事件消息,触发事件.

protected void wndProc(inout Message msg)
{
    switch(msg.msg)
        {
            case WM_LBUTTONUP:
                onClick(EventArgs.empty);
        }
}

使用控件过程:

4.发生事件要执行的函数.

private void bt_click(Object sender, EventArgs ea)
    {}

5.订阅事件.

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为大家提供一个学习交流各种知识的平台

TOP

发新话题