如何做旅游休闲网站,亿唐网不做网站做品牌原因,购物网站建设需要什么资质,珠海汽车网站建设观察者(Observer)模式定义#xff1a;在对象之间定义了一对多的依赖关系#xff0c;这样一来。当一个对象改变状态时#xff0c;依赖它的对象都会收到通知并自己主动跟新。Java已经提供了对观察者Observer模式的默认实现#xff0c;Java对观察者模式的支持主要体如今Observ…观察者(Observer)模式定义在对象之间定义了一对多的依赖关系这样一来。当一个对象改变状态时依赖它的对象都会收到通知并自己主动跟新。Java已经提供了对观察者Observer模式的默认实现Java对观察者模式的支持主要体如今Observable类和Observer接口。先看uml模型图一、UML模型图二、代码实现/** 演示样例咱们去菜市场买菜** 小商贩--主题*/class Food extends Observable {/** 菜名 */private String name;/** 菜价 */private float price;public Food(String name, float price) {this.name name;this.price price;}public String getName() {return name;}public float getPrice() {return price;}public void setPrice(float price) {this.price price;/*** 设置菜价的状态已经被改变*/this.setChanged();/*** 通知【全部】正在看菜(已经注冊了)的顾客然后回调Observer的update方法进行更新** 这里能够体现对象的一对多一个小商贩一旦更新价格(即一个对象改变状态)。便会自己主动通知全部的顾客(依赖它的对象都会收到通知)* 并自己主动update*/this.notifyObservers(price);}}/*** 顾客 --观察者*/class Customer implements Observer {private String name;public Customer(String name) {this.name name;}public String getName() {return name;}Overridepublic void update(Observable o, Object arg) {if (o instanceof Food arg instanceof Float) {Food food (Food) o;float price (Float) arg;System.out.println(您好 this.name , food.getName() 的价格已经发生改变。如今的价格为 price 元/斤);}}}/*** client測试类** author Leo*/public class Test {public static void main(String[] args) {Food food new Food(土豆, 1.0f);Customer zhangsan new Customer(张三);Customer lisi new Customer(李四);/*** 加入顾客*/food.addObserver(zhangsan);food.addObserver(lisi);/*** 更新价格*/food.setPrice(1.5f);}}三、应用场景GUI框架、气象观察等四、小结在通知全部观察者之前一定要调用 setChanged()方法来设置被观察者的状态已经被改变这样notifyObservers()才会回调Observer的update方法进行更新。以上内容假设有不同的见解或疏忽的地方还请大家提出宝贵的建议或意见。最后大家能够试着将以下的uml模型进行详细的代码实现如图附源代码版权声明本文博主原创文章博客未经同意不得转载。