观察者模式
来源:互联网 发布:java 修改配置文件 编辑:程序博客网 时间:2024/04/29 23:06
/** * 多对一的关系 * * 场景:经常涉及到多个对象对一个特殊的对象比较感兴趣,当特殊对象有变化时其他多个对象想要这道 * */
/** * 主题 * * */public interface Theme {public void addObserver(Obsever obsever);public void delObServer(Obsever observer);public void notifyObservers();}
/** * 具体主题 * *此处场景扮演是 求职中中心 */public class JuTiTheme implements Theme{public List<Obsever> observerList;private boolean isNotify;public JuTiTheme(){observerList = new ArrayList<Obsever>();}public void addObserver(Obsever obsever) {observerList.add(obsever);}public void notifyObservers() {for (Obsever obsever : observerList) {obsever.herePhone();}}public void delObServer(Obsever observer) {if (observerList.add(observer)) {observerList.remove(observer);} }//发布消息public void giveMessage(String msg){isNotify = true;if (isNotify) {notifyObservers();}isNotify = false;}public List<Obsever> getList(){return observerList;}}
/** * 观察者 * */public interface Obsever {public abstract void herePhone();}
/** * 具体观察者 * * 相当于场景中的学生求职人员 * */public class WorkerObserver implements Obsever{/** * * @param theme 相当于求职者中心 */public WorkerObserver(Theme theme){theme.addObserver(this);}public void herePhone() {System.out.println("我是工作者,我接听到了电话");}}
/** * 具体观察者 * * 相当于场景中的学生求职人员 * */public class StudentObsever implements Obsever{/** * * @param theme 相当于求职者中心 */public StudentObsever(Theme theme){theme.addObserver(this);}public void herePhone() {System.out.println("我是工学生,我接听到了电话");}}
public class Main {/** * 多对一的关系 * * 场景:经常涉及到多个对象对一个特殊的对象比较感兴趣,当特殊对象有变化时其他多个对象想要这道 * */public static void main(String[] args) {JuTiTheme juTiTheme = new JuTiTheme();//具体主题:求职者中心StudentObsever studentObsever = new StudentObsever(juTiTheme);WorkerObserver workerObserver = new WorkerObserver(juTiTheme);juTiTheme.giveMessage("");}}
0 0
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- Eclipse web项目导入到myeclipse中Tomcat不能直接部署解决方法
- Uva1586
- 深入理解String、StringBuffer、StringBuilder(转)
- Android逆向分析基础-Android可执行文件
- 欢迎使用CSDN-markdown编辑器
- 观察者模式
- android下Invalid layout of java.lang.String at value解决方法
- 高效Java编程工具集锦
- Android Support兼容包详解
- python处理txt文件
- CGI与fastcgi与php-fpm与php-cgi的关系
- 导航的一些概念
- New Year and Days
- iOS多线程编程总结