java设计模式之观察者模式
2016-02-23 21:32
549 查看
概述:观察者模式相当于一对多的依赖,就是当一个对象改变时,会通知它所关联的类
在这里,我们把被观察者用接口Subject定义,把观察者用接口Observer定义
//添加观察者
github地址为: https://github.com/zhouwei5200/observer
在这里,我们把被观察者用接口Subject定义,把观察者用接口Observer定义
/** * 被监视的需要实现这个接口,用于添加,删除,通知观察者 * @author zhou * */ public interface Subject { public void addObser(Obsered obsered); public void deletObser(Obsered obsered); public void notifiObser(String context); }
/** * 观察者实现这个接口,接收消息 * @author zhou * */ public interface Observer { public void ubdate(String str); }
//被观察者 public class ConcreteSubject implements Preson,Subject{ public List<Observer> list = new ArrayList<Observer>(); @Override public void addObser(Observer obsered) { // TODO Auto-generated method stub list.add(obsered);//添加观察者 } @Override public void deletObser(Observer obsered) { // TODO Auto-generated method stub list.remove(obsered);//移除观察者 } @Override public void notifiObser(String str) { // TODO Auto-generated method stub for(Observer obsered:list){ obsered.ubdate(str);//通知观察者消息 } } @Override public void eat() { // TODO Auto-generated method stub this.notifiObser("这货在吃饭"); } @Override public void haveFun() { // TODO Auto-generated method stub this.notifiObser("这货在玩耍"); } }
/** * 观察者 * @author zhou * */ public class ConcreteObserver implements Observer { @Override public void ubdate(String str) { // TODO Auto-generated method stub System.out.println("韩非子在吃饭"); //在这里我已经得到消息 happy(); } public void happy() { // TODO Auto-generated method stub System.out.println("这货很快乐"); } }
//添加观察者
ConcreteSubject concreteSubject = new ConcreteSubject(); Observer lisi = new ConcreteObserver(); concreteSubject.addObser(liusi); concreteSubject.haveFun();
github地址为: https://github.com/zhouwei5200/observer
相关文章推荐
- Eclipse全键盘编码攻略之一——入门
- 用Java实现的简易聊天系统(J2SE初学者练手项目)
- 上机题目(高级)- 电子词典(Java)
- Java设计模式菜鸟系列(七)命令模式建模与实现
- Java的局部变量没有系统默认初始值
- JAVA中的泛型
- windows7+eclipse+hadoop2.5.2环境配置
- 解决springmvc中文件下载功能中使用javax.servlet.ServletOutputStream out = response.getOutputStream();后运行出异常但结果正确的问题
- Spring环境下的 junit 集成测试3
- maven管理Java web项目WEB-INF/lib中jar包不能被引入的问题解决
- java学习日记——this关键字
- 深入理解Java的接口和抽象类
- kettel could not create java virtual machine
- 76_81java
- Java核心技术(第8版)学习笔记_继承(2)_反射
- 配置springmvc在其他类中(spring容器外)获取注入bean
- 利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露
- java中条件(&& ||) 逻辑(& | !^)和按位(& | ^ ~)的区别
- 浅谈Struts2拦截器的原理与实现
- struts2中action接收参数的方法