设计模式之观察者模式
来源:互联网 发布:free mobile java在线 编辑:程序博客网 时间:2024/06/06 01:27
观察者模式就像手机上订报纸
报社:Subject用户:Observer
以下是一个简单的观察者模式示例:
报社:登记用户、解绑用户、通知用户
用户:接收报纸
Subject接口如下:
/** * 被订阅方:报纸 */public interface Subject{ /** * 注册 */ public void registObserver(Observer observer); /** * 解注册 */ public void removeObserver(Observer observer); /** * 通知更新 */ public void notityDataChange();}
Observer接口如下:
/** * 订阅者 */public interface Observer{ /** * 更新 */ public void update(String title,String content);}
NewsPaperSubject (报社)如下:
/** * 报社(被订阅方) */public class NewsPaperSubject implements Subject{ /** * 新闻标题 */ private String title; /** * 新闻内容 */ private String content; private ArrayList<Observer> observers = new ArrayList<Observer>(); @Override public void registObserver(Observer observer) { observers.add(observer); } @Override public void removeObserver(Observer observer) { observers.remove(observer); } @Override public void notityDataChange() { for (int i = 0; i < observers.size(); i++) { observers.get(i).update(title, content); } } public void setNews(String title, String content) { this.title = title; this.content = content; notityDataChange(); }}
NewsPaperObserver(用户) 如下:
public class NewsPaperObserver implements Observer{ private String title; private String content; @Override public void update(String title, String content) { this.title = title; this.content = content; display(); } public void display() { System.out.println(title); System.out.println(content); }}
main方法如下:
public static void main(String[] args) { NewsPaperSubject subject = new NewsPaperSubject(); NewsPaperObserver observer = new NewsPaperObserver(); subject.registObserver(observer); subject.setNews("不好啦,不好啦", "月亮掉进井里拉"); }
0 0
- 设计模式之-观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 424. Longest Repeating Character Replacement
- 医疗行业应用交付解决方案【ANS SOLUTIONS】
- 在linux上搭建git服务器
- iOS-文件路径 temp document library 等
- jvm调试笔录
- 设计模式之观察者模式
- linux安装telnet服务端客户端
- git 常用命令
- Max Sum
- Android Material Design系列之主题样式介绍说明等
- AndroidStudio插件 - ButterKnife的使用步骤
- Android Content Provider使用
- android.content.res.Resources$NotFoundException: String resource ID #0x2f38
- SystemUI之控制中心实现