首页 > 代码库 > JAVA回调机制和观察者模式实例分享
JAVA回调机制和观察者模式实例分享
回调函数在JAVA中使用频繁,比如Swing可视化编码中的监听事件等等,一般回调函数都是,通过某一个方法的执行,自动调用回调对象的回调方法,比如,有一个接口,里面有一个方法onNotify(),这个方法是一个回调方法,表明当触发事件发生时候,该调用的方法,举个例子:
一个回调接口
/** * @author minliangzhi * @date 2016年9月8日 */public interface ICallBack { void onNotify();}
一个具体的实体对象,会出发回调函数的执行:
/** * @author minliangzhi * @date 2016年9月8日 */public class Task { private ICallBack callBack; public Task(ICallBack callBack) { this.callBack = callBack; } public void doSomething() { callBack.onNotify(); }}
具体的使用方法为:
public static void main(String[] args) { new Task(new ICallBack() { @Override public void onNotify() { System.out.println("我是回调方法"); } }).doSomething(); }
通过调用实体对象的方法,就会触发回调函数对象的回调方法,我们这里只是简单的使用了一个匿名类的方法提供了回调对象。
由此,我们可以分析下观察者模式的具体含义和一般实现:
观察者模式可以分成两部分,一部分是发布者,一部分是观察者,发布者的某些方法,会通知所有的观察者,让他们知晓发布者的发布信息。
观察者:
/** * @author minliangzhi * @date 2016年9月8日 */public interface Observer { void onNotify(String content);}public class Mike implements Observer { @Override public void onNotify(String content) { System.out.println("Mike get : " + content); }}public class Bob implements Observer { @Override public void onNotify(String content) { System.out.println("Bob get : " + content); }}
上述定义了两个观察者,下面定义一个发布消息者:
/** * @author minliangzhi * @date 2016年9月8日 */public interface Publisher { /** * 注册一个观察者 * @param observer */ void registObserver(Observer observer); /** * 移除一个观察者 * @param observer */ void removeObserver(Observer observer); /** * 通知所有的观察者 */ void notifyAllObserver();}
一个具体的实现类,工作发布者Hunter:
/** * @author minliangzhi * @date 2016年9月8日 */public class Hunter implements Publisher { private List<Observer> observer; private String jobContent; public void setJob(String content) { this.jobContent = content; } public Hunter() { this.observer = new ArrayList<Observer>(); } @Override public void registObserver(Observer observer) { this.observer.add(observer); } @Override public void removeObserver(Observer observer) { this.observer.remove(observer); } @Override public void notifyAllObserver() { for(Observer ob : observer) { ob.onNotify(jobContent); } }}
使用方法:
public static void main(String[] args) { /** 构造发布者和观察者,并注册 */ Hunter hunter = new Hunter(); Observer bob = new Bob(); Observer mike = new Mike(); hunter.registObserver(bob); hunter.registObserver(mike); /** 发布消息,通知所有观察者 */ hunter.setJob("JAVA"); hunter.notifyAllObserver(); }
JAVA回调机制和观察者模式实例分享
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。