Java回调方式:Java Listener模式

 每种语言都有自己回调的方法,java也不例外。本文介绍Java Listener模式 。

  以上是java的MVC框架下最精彩的一段代码.下面是model的工作例子:


  1 //测试model
  2 public static void main(String[] args) {
  3 Model model = new Model();
  4 //添加一个匿名内部类,里面实现了click方法.
  5 model.addListener(new MouseListener() {
  6
  7 public void click() {
  8 System.out.println("我被点击了");
  9 }
  10 });
  11 //再添加一个内部类.
  12 model.addListener(new MouseListener() {
  13
  14 public void click() {
  15 System.out.println("我被点击了");
  16 }
  17 });
  18
  19 //下面给model一个点击,在实际的JDK源代码中,也是这样子去调用Model中的响应方法的.
  20 model.clickModel();
  21 }
  22

  我们可以看到,只点击一次model,却可以输出了2次"我被点击了"的信息.这也就是为什么你可以向JButton,JComboBox,JList,JTable等等里面添加任意多的各种listener.当然其中的奥秘仍需要各位读者自己慢慢琢磨.下面是源代码:

 


 1 public class Model {
  2
  3 //初始化50个监听器
  4 private MouseListener[] listeners = new MouseListener[50];
  5 //用于记录当前listeners数组记录到了哪里
  6 int index = 0;
  7
  8 public void addListener(MouseListener listener) {
  9 //向这个model中注册一个监听器
  10 listeners[index++] = listener;
  11 }
  12
  13 public void clickModel() {
  14 //调用注册进来所有的listener的click方法
  15 for (int i = 0; i < index; i++) {
  16 listeners[i].click();
  17 }
  18 }
  19 //测试model
  20 public static void main(String[] args) {
  21 Model model = new Model();
  22 //添加一个匿名内部类,里面实现了click方法.
  23 model.addListener(new MouseListener() {
  24
  25 public void click() {
  26 System.out.println("我被点击了");
  27 }
  28 });
  29 //再添加一个内部类.
  30 model.addListener(new MouseListener() {
  31
  32 public void click() {
  33 System.out.println("我被点击了");
  34 }
  35 });
  36
  37 //下面给model一个点击
  38 model.clickModel();
  39 }
  40 }
  41
  42 interface MouseListener {
  43 //当click方法被调用的时候代表被鼠标点击了.
  44 void click();
  45 }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值