知识大全 Java Listener模式
Posted 知
篇首语:博观而约取,厚积而薄发。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java Listener模式相关的知识,希望对你有一定的参考价值。
Java Listener模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
每种语言都有自己回调的方法 java也不例外
Java的回调是采用多态的方式来回调 比如:
interface MouseListener
//当click方法被调用的时候代表被鼠标点击了
void click();
上面是一个接口 里面只有一个方法 先就通过一个例子展示java是如果施展多态的力量了
public class Model
//初始化 个监听器
private MouseListener[] listeners = new MouseListener[ ];
//用于记录当前listeners数组记录到了哪里
int index = ;
public void addListener(MouseListener listener)
//向这个model中注册一个监听器
listeners[index++] = listener;
public void clickModel()
//调用注册进来所有的listener的click方法
for (int i = ; i < index; i++)
listeners[i] click();
//测试model
public static void main(String[] args)
Model model = new Model();
//添加一个匿名内部类 里面实现了click方法
model addListener(new MouseListener()
public void click()
System out println( 我被点击了 );
);
//再添加一个内部类
model addListener(new MouseListener()
public void click()
System out println( 我被点击了 );
);
//下面给model一个点击
model clickModel();
以上是java的MVC框架下最精彩的一段代码 下面是model的工作例子:
//测试model
public static void main(String[] args)
Model model = new Model();
//添加一个匿名内部类 里面实现了click方法
model addListener(new MouseListener()
public void click()
System out println( 我被点击了 );
);
//再添加一个内部类
model addListener(new MouseListener()
public void click()
System out println( 我被点击了 );
);
//下面给model一个点击 在实际的JDK源代码中 也是这样子去调用Model中的响应方法的
model clickModel();
我们可以看到 只点击一次model 却可以输出了 次 我被点击了 的信息 这也就是为什么你可以向JButton JComboBox JList JTable等等里面添加任意多的各种listener 当然其中的奥秘仍需要各位读者自己慢慢琢磨 下面是源代码:
public class Model
//初始化 个监听器
private MouseListener[] listeners = new MouseListener[ ];
//用于记录当前listeners数组记录到了哪里
int index = ;
public void addListener(MouseListener listener)
//向这个model中注册一个监听器
listeners[index++] = listener;
public void clickModel()
//调用注册进来所有的listener的click方法
for (int i = ; i < index; i++)
listeners[i] click();
//测试model
public static void main(String[] args)
Model model = new Model();
//添加一个匿名内部类 里面实现了click方法
model addListener(new MouseListener()
public void click()
System out println( 我被点击了 );
);
//再添加一个内部类
model addListener(new MouseListener()
public void click()
System out println( 我被点击了 );
);
//下面给model一个点击
model clickModel();
interface MouseListener
//当click方法被调用的时候代表被鼠标点击了
void click();
cha138/Article/program/Java/hx/201311/26201相关参考