Java——观察者模式实例

时间:2022-02-19 10:51:26

观察者模式(订阅/发布模式)

作者:

代码大湿

代码大湿

Java中观察者模式中主要是Observerable类(被观察者),和Observer接口(观察者)。下面是个简单的demo

//被观察者

package demo;

import java.util.Observable;

public class MyObserverable extends Observable{

	//被观察者调用了这个方法,观察者就会发现
@Override
protected synchronized void setChanged() {
// TODO Auto-generated method stub
super.setChanged();
} //被观察者调用了这个方法,就会向观察者发送改变的信息
@Override
public void notifyObservers(Object arg) {
// TODO Auto-generated method stub
super.notifyObservers(arg);
} }

//观察者

package demo;

import java.util.Observable;
import java.util.Observer; public class MyObserver implements Observer{
private String name;
public MyObserver(String name) {
this.name=name;
}
//一旦被观察者有改变,就会调用update方法
@Override
public void update(Observable o, Object arg) {
System.out.println(name+"观察到 "+arg.toString());
} }

//main方法

package demo;

public class Main {
public static void main(String[] args) {
MyObserver myObserver_1=new MyObserver("observer_1");
MyObserver myObserver_2=new MyObserver("observer_2"); MyObserverable myObserverable=new MyObserverable();
//添加2个观察者
myObserverable.addObserver(myObserver_1);
myObserverable.addObserver(myObserver_2); String msg="msg has changed";
//设置消息改变点
myObserverable.setChanged();
//通知观察者改变的消息
myObserverable.notifyObservers(msg);
} }

结果

Java——观察者模式实例


更多好文关注;

代码大湿

代码大湿