首页 > 代码库 > Java设计模式-------观察者模式
Java设计模式-------观察者模式
* 简单来说,观察者模式=发布者+订阅者。下面是一个有关猎头的典型的例子。在下面这张图当中有两个角色:
* 猎头和寻找工作的人。找工作的人向猎头订阅,告知自己希望得到一份工作,当有新的工作机会的时候,
* 猎头和寻找工作的人。找工作的人向猎头订阅,告知自己希望得到一份工作,当有新的工作机会的时候,
* 猎头就会把这个信息通知给曾经向他订阅过的人。
猎头接口:
package com.pattern.observer; /** * @author Qixuan.Chen * 创建时间:2014年9月2日 */ public interface Subject { public void registerObserver(Observer observer); public void removeObserver(Observer observer); public void notifyAllObservers(); }
订阅者接口:
package com.pattern.observer; /** * @author Qixuan.Chen * 创建时间:2014年9月2日 */ public interface Observer { //观察者更新 public void update(Subject subject); }
猎头实现类:
package com.pattern.observer; import java.util.ArrayList; import java.util.List; /** * @author Qixuan.Chen * 创建时间:2014年9月2日 * 猎头类 */ public class HeadCounter implements Subject { private List<Observer> observerList; private List<String> jobList; public HeadCounter(){ observerList = new ArrayList<Observer>(); jobList = new ArrayList<String>(); } //实现接口的方法 //获取已注册的人员 @Override public void registerObserver(final Observer observer) { if(! observerList.contains(observer)){ observerList.add(observer); } } //删除已注册的人员 @Override public void removeObserver(final Observer observer) { if(observerList.contains(observer)){ observerList.remove(observer); } } //通知 @Override public void notifyAllObservers() { for(Observer observer : observerList){ observer.update(this); } } //增加新工作 public void addJob(final String job){ this.jobList.add(job); notifyAllObservers(); } //获取工作 public List<String> getJobs(){ return jobList; } public String toString(){ return jobList.toString(); } }订阅者实现类:
package com.pattern.observer; /** * @author Qixuan.Chen * 创建时间:2014年9月2日 * 订阅者类 */ public class JobSeeker implements Observer{ private String name;//订阅者姓名 public JobSeeker(String name){ this.name = name; } //实现接口的方法 public void update(Subject subject) { System.out.println("----给-------"+this.name + "------发通知"); System.out.println(subject); } }测试类:
package com.pattern.observer; /** * @author Qixuan.Chen * 创建时间:2014年9月2日 * 简单来说,观察者模式=发布者+订阅者。下面是一个有关猎头的典型的例子。在下面这张图当中有两个角色: * 猎头和寻找工作的人。找工作的人向猎头订阅,告知自己希望得到一份工作,当有新的工作机会的时候, * 猎头就会把这个信息通知给曾经向他订阅过的人。 * * 两接口,两实现,一测试 */ public class TestDemo { public static void main(String[] args) { System.out.println("----------程序入口------------"); HeadCounter headCounter = new HeadCounter(); //注册订阅者 headCounter.registerObserver(new JobSeeker("Mike")); headCounter.registerObserver(new JobSeeker("Chris")); headCounter.registerObserver(new JobSeeker("Jeff")); //通知所有订阅者有新的工作机会 headCounter.addJob("Google Job"); headCounter.addJob("Yahoo Job"); } }
Java设计模式-------观察者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。