标签:
原文链接:http://www.2cto.com/kf/201310/253013.html
如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import java.util.* ; class House extends Observable{ // 表示房子可以被观察 private float price ; // 价钱 public House( float price){ this .price = price ; } public float getPrice(){ return this .price ; } public void setPrice( float price){ // 每一次修改的时候都应该引起观察者的注意 super .setChanged() ; // 设置变化点 super .notifyObservers(price) ; // 价格被改变 this .price = price ; } public String toString(){ return "房子价格为:" + this .price ; } }; class HousePriceObserver implements Observer{ private String name ; public HousePriceObserver(String name){ // 设置每一个购房者的名字 this .name = name ; } public void update(Observable o,Object arg){ if (arg instanceof Float){ System.out.print( this .name + "观察到价格更改为:" ) ; System.out.println(((Float)arg).floatValue()) ; } } }; public class ObserDemo01{ public static void main(String args[]){ House h = new House( 1000000 ) ; HousePriceObserver hpo1 = new HousePriceObserver( "购房者A" ) ; HousePriceObserver hpo2 = new HousePriceObserver( "购房者B" ) ; HousePriceObserver hpo3 = new HousePriceObserver( "购房者C" ) ; h.addObserver(hpo1) ; h.addObserver(hpo2) ; h.addObserver(hpo3) ; System.out.println(h) ; // 输出房子价格 h.setPrice( 666666 ) ; // 修改房子价格 System.out.println(h) ; // 输出房子价格 } }; |
Java常用类库--观察者设计模式( Observable类Observer接口)
标签:
原文地址:http://www.cnblogs.com/gaoyihan/p/4309689.html