Java设计模式(6)——观察者模式
来源:互联网 发布:2016淘宝如何打造爆款 编辑:程序博客网 时间:2024/06/10 15:23
一、什么是观察者模式
Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。
二、观察者模式的结构
三、观察者模式的角色和职责
Subject(被观察者) 被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。
ConcreteSubject 被观察者的具体实现。包含一些基本的属性状态及其他操作。
Observer(观察者) 接口或抽象类。当Subject的状态发生变化时,Observer对象将通过一个callback函数得到通知。
ConcreteObserver 观察者的具体实现。得到通知后将完成一些具体的业务逻辑处理。
四、观察者模式的典型应用
Observer模式的典型应用
- 侦听事件驱动程序设计中的外部事件
- 侦听/监视某个对象的状态变化
- 发布者/订阅者(publisher/subscriber)模型中,当一个外部事件(新的产品,消息的出现等等)被触发时,通知邮件列表中的订阅者
代码:
Article .java
//被观察者的具体实现public class Article { private String articleTitle; private String articleCount; public String getArticleTitle() { return articleTitle; } public void setArticleTitle(String articleTitle) { this.articleTitle = articleTitle; } public String getArticleCount() { return articleCount; } public void setArticleCount(String articleCount) { this.articleCount = articleCount; }}
BoZhu.java
import java.util.Observable;//被观察者public class BoZhu extends Observable{ public void sun(String articleTitle,String articleCount){ Article art = new Article(); art.setArticleTitle(articleTitle); art.setArticleCount(articleCount); System.out.println("博客发表了文章,标题:"+articleTitle+" 内容:"+articleCount); this.setChanged(); this.notifyObservers(art); }}
MyObservlet .java
//观察者的具体实现import java.util.Observable;import java.util.Observer;public class MyObservlet implements Observer { @Override public void update(Observable o, Object arg) { Article m = (Article)arg; System.out.println("博主发表新文章了"); System.out.println("新文章标题:"+m.getArticleTitle()); System.out.println("新文章内容:"+m.getArticleCount()); }}
MainClass .java
public class MainClass { //测试类 public static void main(String[] args) { BoZhu b = new BoZhu(); b.addObserver(new MyObservlet()); b.sun("北京我来了", " 在外面有很多的困难地方"); //博客发表了文章,标题:北京我来了 内容: 在外面有很多的困难地方 //博主发表新文章了 //新文章标题:北京我来了 //新文章内容: 在外面有很多的困难地方 }}
阅读全文
0 0
- Java设计模式(6)——观察者模式
- Java设计模式—观察者(Observer)
- Java设计模式——观察者模式
- java设计模式——观察者模式
- JAVA设计模式——观察者模式
- Java 设计模式——观察者模式
- JAVA设计模式 —— 观察者模式
- Java设计模式——观察者模式
- Java设计模式——观察者模式
- java设计模式——观察者模式
- java设计模式——观察者模式
- Java设计模式——观察者模式
- Java设计模式——观察者模式
- Java设计模式—— 观察者模式
- Java设计模式——观察者模式
- Java设计模式——观察者模式
- Java设计模式——观察者模式
- Java设计模式——观察者模式
- 使用CSDN-markdown编辑器
- ACM训练半周日记—11月9日
- 初学C语言
- 线程
- 运算符的重载
- Java设计模式(6)——观察者模式
- Understanding and Diagnosing Visual Tracking Systems
- POJ
- 关于数组名与指针的再学习
- 开头
- HTTPS和HTTP的区别
- 【Ubuntu】奇技淫巧-代码雨&小火车
- 子集生成——二进制方法与递归方法
- 8.5 switch...case语句注意问题