java的事件处理

来源:互联网 发布:常见网络端口号 编辑:程序博客网 时间:2024/04/30 14:06

java的事件处理。说白了就是一种别人先盖章。再随便你签合同的行为。

其实事件处理很简单。你只要把这背后的原理看清马上自己也能写了。

java里的事件处理一般依赖接口来实现。为什么要用接口呢。因为接口里面的函数是虚函数。是可以让别人去重写的。

这样做的好处是什么?我们就来仔细讲讲好处。

我们要看到设计者的想法。才能更好的去理解这套机制。

我们打个比方。假如有一套房子。有各式各样的佣人,我们写下这样的程序

如果是1点。叫保洁阿姨扫地

如果是2点。叫做饭阿姨做饭

如果是3点。叫洗衣阿姨洗衣

。。。。。。

看起来不错。会很有条理。

可如果换到另一家呢?他家根本没有这几个阿姨你怎么办?是不是你之前定好的规则就一下子就废了?你不能要求每个使用这套系统的人都去把这些阿姨雇来把。这显然是不现实的。

如果换一种不是那么周到的方式。

如果是1点。通知管家做1号盒子里的事情

如果是2点。通知管家做2号盒子里的事情

如果是3点。通知管家做3号盒子里的事情

。。。。。。

乍一看。好像这样的系统没有任何的意义。其实这就是事件处理的模型

这里面管家就是一个接口。123号盒子里的事情。那就是里面的函数。

或许还不明显。你会觉得看不懂。不知道这有何联系。我们再往下看。

这套系统要求使用者一定要有一个管家。才能工作下去。这相对之前的要求每个用户必须要有配套的各种阿姨来说是一种质的飞跃。而且还有一个极大的好处是什么。用户使用这套系统的时候。完全是随心所欲。你在一点钟想要做什么事情你只要把要做的事情写好放在1号盒子里面。如此一看。不知道你是不是对事件机制有了全局的把握呢。我们可以在将逻辑理一理。对应到专业术语上来。

我们可以拿按钮来举例。

当用户按下按钮的时候。你要显示一行文字。“你按下了的按钮”

要实现这个功能。相信你肯定是知道的。button.setonclickListener(new

{ public void onclick(){

  print(“你按下了按钮”)}});

就是这样短短的代码。

然后我们来看它在源码中会怎么写。
private onclickListener onclicklistener;//声明一个接口//定义一个接口public interface onclickListener{public void onclick();}public void setonclickListener(onclickListener listener){this.onclicklistener = listener;}。。。。。。。。。。if(<span style="font-family: Arial, Helvetica, sans-serif;">onclicklistener  != null</span>)
<pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;">onclicklistener.onclick()</span>
。。。。。。
看到这里。一切都是水落石出了。

这套机制中。先定义一个接口m。m中有一个方法n。然后还有一个setm的函数。这个函数也就是注册监听器的函数了。这个函数要传递一个接口对象。既然是接口。你在使用的时候就得实现里面的n方法。如此就导致了if判断中监听器不为空(因为你注册过了)导致接口中的n方法被调用了。现在你明白了。为何你在代码中写下seton。。Listener这样的函数的时候。在发生对应事件的时候。总能让你重写的n方法被执行了吧。




0 0
原创粉丝点击