手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

JAVA设计模式之观察者模式

时间:2024-10-17 07:05:40

1、观察者设计模式模拟是一个非常有意思的设计模式,可以理解为一触即发。如果要想实现观察者的设计模式需要以下的两个程序结构:观察者:jav锾攒揉敫a.util.Observer;被观察者:java.util.Observable;范例:实现观察者://这些是所有的观察者class Person implements Observer { @Override public void update(Observable o, Object arg) { //一旦你关注的事情发生了变化 if(o instanceof House) { if(arg instanceof Double) { System.out.println("房价上涨!新价格:" + arg); } } } }

JAVA设计模式之观察者模式

2、实现被观察者:当房价上涨时通知观察者。class House extends Observable { private double price; public House(double price) { this.price = price; } public void setPrice(double price) { if(price > this.price) { super.setChanged(); //现在关注的价格改变了 super.notifyObservers(price); //唤醒所有的观察者 } this.price = price; }}

JAVA设计模式之观察者模式

3、在客户端注册观察者:public class ObserverDesign { public static void main(String[] args) { Person personA = new Person(); Person personB = new Person(); Person personC = new Person(); //设置观察者 House house = new House(8000000); house.addObserver(personC); house.addObserver(personB); house.addObserver(personA); house.setPrice(9000000); } }

JAVA设计模式之观察者模式

4、当房价上涨时执行main主方法观察者会收到通知:

JAVA设计模式之观察者模式

5、当房价下降执行main主方法观察者不会收到通知:package com.gwolf.design;import java.util.Observable;import java.util.Observer;//这些是所有的观察者class Person implements Observer { @Override public void update(Observable o, Object arg) { //一旦你关注的事情发生了变化 if(o instanceof House) { if(arg instanceof Double) { System.out.println("房价上涨!新价格:" + arg); } } } }//被观察者class House extends Observable { private double price; public House(double price) { this.price = price; } public void setPrice(double price) { if(price > this.price) { super.setChanged(); //现在关注的价格改变了 super.notifyObservers(price); //唤醒所有的观察者 } this.price = price; }}public class ObserverDesign { public static void main(String[] args) { Person personA = new Person(); Person personB = new Person(); Person personC = new Person(); //设置观察者 House house = new House(8000000); house.addObserver(personC); house.addObserver(personB); house.addObserver(personA); house.setPrice(7000000); } }

JAVA设计模式之观察者模式

6、执行main主方法,我们将看到控制台不会有任何输出。

JAVA设计模式之观察者模式
© 手抄报圈