java 观察者模式 – csm

观察者模式的定义:

定义对象间的一种一对多的依赖关系。到一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

现在很多的购房者都在关注着房子的价格变化,每当房子价格变化的时候,所有的购房者都可以观察得到。

实际上以上的购房者都属于观察者,他们都在关注着房子的价格。

[java]view plaincopy

    packagecom.itmyhome;importjava.util.Observable;importjava.util.Observer;classHouseextendsObservable{//表示房子可以被观察privatefloatprice;//房子价格publicHouse(floatprice){this.price=price;}publicfloatgetPrice(){returnprice;}publicvoidsetPrice(floatprice){this.price=price;this.setChanged();//每一次修改的时候都应该引起观察者的注意this.notifyObservers(this.price);//价格改变通知观察者}}classPersonimplementsObserver{privateStringname;publicPerson(Stringname){//设置每一个观察者的名字this.name=name;}//Observer接口提供的方法 //当House对象的setPrice()调用后这个函数会被执行,相当于notifyObservers函数发送了一个组播publicvoidupdate(Observableo,Objectarg){System.out.println(this.name+",观察到价格更改为:"+arg);}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}}publicclassObserverTest{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubHouseh=newHouse(1000000);//创建观察者Personp1=newPerson("购房者A");Personp2=newPerson("购房者B");Personp3=newPerson("购房者C");h.addObserver(p1);h.addObserver(p2);h.addObserver(p3);h.setPrice(100);//房子价格改变由100万变成了100虽然这只是一个梦想!}}

输出结果为:

[java]view plaincopy

    购房者C,观察到价格更改为:100.0购房者B,观察到价格更改为:100.0购房者A,观察到价格更改为:100.0

好好的管教你自己,不要管别人。

java 观察者模式 – csm

相关文章:

你感兴趣的文章:

标签云: