标签:os java ar for 2014 sp on 工作 时间
* 简单来说,观察者模式=发布者+订阅者。下面是一个有关猎头的典型的例子。在下面这张图当中有两个角色:* 猎头就会把这个信息通知给曾经向他订阅过的人。
猎头接口:
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"); } }
标签:os java ar for 2014 sp on 工作 时间
原文地址:http://blog.csdn.net/kenhins/article/details/39005659