观察者模式
来源:互联网 发布:windows xp系统重装 编辑:程序博客网 时间:2024/05/21 18:36
观察者模式定义:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Oberver变化。
观察者模式就像小时候的订牛奶业务
奶站:相当于Subject,负责订奶家庭的登记,派送,退订工作
用户:相当于Oberver,订奶家庭
Subject:负责用户的登记注册,移除和通知
Oberver:负责接收Subject的通知输入
代码案例:
1
2
3
4
5
6
//观察者
public
interface
Observer {
public
void
update();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public
class
MilkFamily
implements
Observer {
private
String familyName;
public
MilkFamily(String familyName) {
this
.familyName = familyName;
}
@Override
public
void
update() {
System.out.println(familyName+
"--------收到牛奶"
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//被观察者
public
abstract
class
Observable {
protected
List<Observer> observerList =
new
ArrayList<Observer>();
//添加观察者
public
void
addObserver(Observer observer){
observerList.add(observer);
}
//移除观察者
public
void
deleteObserver(Observer observer){
observerList.remove(observer);
}
//通知所有观察者
public
void
notifyObservers(){
for
(Observer o : observerList){
o.update();
}
}
}
1
2
3
4
5
6
7
8
public
class
MileStation
extends
Observable {
public
void
deliver(){
System.out.println(
"新的一天到了,牛奶站准备送牛奶了。。。。。。"
);
super
.notifyObservers();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public
class
Main {
public
static
void
main(String args[]){
MileStation mileStation =
new
MileStation();
MilkFamily milkFamily =
new
MilkFamily(
"小小巫的家"
);
MilkFamily milkFamily2 =
new
MilkFamily(
"巫巫巫的家"
);
mileStation.addObserver(milkFamily);
mileStation.addObserver(milkFamily2);
mileStation.deliver();
}
}
0 0
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 程序员面试金典(动态规划):8(n)皇后问题(java解法)
- TopKElements和Hashmap的空间复杂度问题
- 判断字符串是否没有重复字符
- 编译个性化的openwrt固件
- [Java]根据文件取得Mime Type的各种方法
- 观察者模式
- sql Server 锁
- HTML5 canvas绘制雪花飘落动画(需求分析、知识点、程序编写分布详解)
- php中模拟POST提交数据两种方法
- [Android] 获取文件的MIME类型
- php 如何自动post
- hadoop2x-eclipse-plugin在hadoop 2.7下编译
- unity 编辑器工具扩展
- PHP不点击按钮post并跳转