观察者模式
来源:互联网 发布:可以看电视的软件 编辑:程序博客网 时间:2024/06/10 06:52
package com.zhjg.pattern.observer;import java.util.ArrayList;import java.util.List;/** * 被观察者基类:所有的被观察者都应继承此基类 * @author 327084 * */public abstract class Observed {/** * 观察者列表 */private List<Observer> observers = new ArrayList<Observer>();/** * 观察者关注以后添加到观察者列表 * @param observer */public void regist(Observer observer){observers.add(observer);}/** * 取关之后从观察者列表中移除 * @param observer */public void cancel(Observer observer){observers.remove(observer);}/** * 变动通知 */public void notifyObservers(Object object){for (Observer observer : observers) {//这里可以给关注商品的用户发邮件通知observer.update(object);}}}
package com.zhjg.pattern.observer;/** * 观察者接口:所有的观察者都应实现此接口 * @author 327084 * */public interface Observer {public void update(Object object);}
package com.zhjg.pattern.observer;/** * 商品:降价通知(被观察者) * @author 327084 * */public class Product extends Observed{private String id;private String name;private double price;public Product() {super();}public Product(String id, String name, double price) {super();this.id = id;this.name = name;this.price = price;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;notifyObservers(price);}}
package com.zhjg.pattern.observer;/** * 消费者:电商用户(关注商品)是观察者角色 * @author 327084 * */public class Consumer implements Observer{private String name;public Consumer() {super();}public Consumer(String name) {super();this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}/** * 关注商品 * @param observed */public void observe(Observed observed){observed.regist(this);}/** * 变动通知调用方法 */@Overridepublic void update(Object object) {double price = (double)object;System.out.println(name+"收到通知:商品新价格为"+price);}}
0 0
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 深入理解javascript原型和闭包(16)——补充:上下文环境和作用域的关系
- Linux驱动的两种加载方式过程分析
- 【无人驾驶系列】基于ROS的无人驾驶系统
- 2017.2.9 网络基础有感
- 事实表,维度,度量,指标之间的关系
- 观察者模式
- 二分查找,你真的掌握了吗?
- 506. Relative Ranks
- Python3.5爬取图片以及遇到的问题
- pat-basic-1032-c语言
- Android应用开发资源汇总
- 管理系统UI之二:隐藏Status Bar (Hiding the Status Bar)
- iOS-申请邓白氏编码的超详细流程介绍
- @Table(name = "", uniqueConstraints = @UniqueConstraint(columnNames = ""))