java设计模式之观察者模式
2016-04-17 22:35
232 查看
定义:一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知,此种模式通常被用来实现事件处理系统。
适用场景:
1、一个对象状态的更新,需要其他对象同步更新,且其他对象的数量动态可变。
2、对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。
观察者模式类图:
实例:
适用场景:
1、一个对象状态的更新,需要其他对象同步更新,且其他对象的数量动态可变。
2、对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。
观察者模式类图:
实例:
<pre name="code" class="java">package com.huaxin.observer; import java.util.ArrayList; /** * 被观察者的父类抽象 * <pre name="code" class="java">package com.zhujing.observer; /** * 观察者父类抽象 * * @author SiLious * */ public interface Observer { public void eventOne(float price); }
package com.zhujing.observer; /** * 观察者父类抽象 * * @author SiLious * */ public interface Observer { public void eventOne(float price); }
package com.zhujing.observer; /** * 被观察者的具体类 * * @author SiLious * */ public class IPhone10 implements Subject { @Override public void addObeserver(Observer obs) { // TODO Auto-generated method stub obsList.add(obs); } @Override public void removeObserver(Observer obs) { // TODO Auto-generated method stub obsList.remove(obs); } @Override public void notifyObserver(float price) { // TODO Auto-generated method stub for (Observer obs : obsList) { obs.eventOne(price); } } }
package com.zhujing.observer; public class Teacher implements Observer { private String name; public Teacher(String name) { this.name = name; } @Override public void eventOne(float price) { // TODO Auto-generated method stub System.out.println(name + "老师你好,苹果手机降价啦,现价:" + price); } }
package com.zhujing.observer; /** * 观察者的具体类 * * @author SiLious * */ public class Student implements Observer { private String name; public Student(String name) { this.name = name; } @Override public void eventOne(float price) { // TODO Auto-generated method stub System.out.println(name + "同学你好,苹果手机降价啦,现价:" + price); } }
相关文章推荐
- JAVA常见问题解决办法汇总
- 20145320 《Java程序设计》第七周学习总结
- 导入外部jar包的方法
- eclipse创建MAVEN仓库项目
- java学习笔记(2)基本数据类型对象包装类
- json中date类型数据为空造成转JAVA对象失败
- 20145127《java程序设计》第七周学习总结
- Spring-1 之入门
- 20145335郝昊《java程序设计》第7周学习总结
- Eclipse常用快捷键
- 20145310 《Java程序设计》第7周学习总结
- Java 继承与接口
- 20145118《Java程序设计》 第7周学习总结
- java 面向对象
- 20145328 《Java程序设计》第7周学习总结
- Java并发:多线程和java.util.concurrent并发包总结
- Java垃圾收集的相关知识
- java数据库连接类,已经把数据库操作的方法都封装好了
- java日志组件介绍(common-logging,log4j,slf4j,logback )
- Java中的properties文件的读取