关于Java程序设计的思考——事件监听模式

第一次上了关于事件监听模式的课之后,就开始使用了这种模式来编写Netalk 客户端,以前的方法继续扩展非常困难,类之间的耦合越来越高,代码也变得混乱。

 

事件模式就是定义一个事件监听器(MsgListener)的接口,再编写类来继承界面上所使用的组件(JTree、DefaultMutableTreeNode等),并实现事件监听器接口,而通信线程所收到的信息都作为事件,调用MsgListener中的onMsg()的方法来处理。

 

这样使通信线程与聊天界面之间的通信变为单向调用。

但第一次使用这种方法时还是跳入了另一个死圈,想到了事件监听器接口,却没细究如何使用。而是让UI类实现了事件监听器接口,这样可以基本实现功能,也可以继续扩展,但是代码还是集中在UI类中,处理各种信息的代码也使得程序很臃肿。

 

通信线程收到服务器的信息并解析后(避免花费大量时间在事件监听器队列遍历的过程中,某些信息只需要某个监听器来响应),传递给UI的信息是多样的,虽然传递的都是字符串。

这些消息都可以放在一个Msg对象中。界面上响应信息的组件也是不一样的。定义自定义的组件类  class ……extends (组件类) emplements MsgListener,在根据对应的功能重写onMsg(Msg msg)方法。然后将构建的MsgListener对象添加到线程中的事件监听器队列中。这样通信线程只需要调用MsgListener中的onMsg(Msg msg)的方法就可以。

这样可以使程序更灵活,降低类之间的耦合度,也使程序更容易扩展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值