java jdk 观察者模式_JDK观察者模式实现Observer Observable

博客介绍了JDK提供的观察者模式实现类java.util.Observer和java.util.Observable。详细给出了观察物、观察者的Java代码示例,还展示了测试类代码,通过创建观察者和观察物,添加观察者并触发观察物动作,实现了观察者模式的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDK提供了观察者模式的实现类java.util.Observer,java.util.Observable.

java.util.Observer为观察者。

java.util.Observable观察物。

1.观察物

Java代码 icon_copy.gificon_star.png

spinner.gif

package observer;

import java.util.Observable;

public class Publisher extends Observable {

private String magazineName;

public String getMagazineName() {

return magazineName;

}

public void publish(String magazineName) {

this.magazineName = magazineName;

setChanged();// set the changed signal

notifyObservers();// notify all the observers

}

}

package observer;

import java.util.Observable;

public class Publisher extends Observable {

private String magazineName;

public String getMagazineName() {

return magazineName;

}

public void publish(String magazineName) {

this.magazineName = magazineName;

setChanged();// set the changed signal

notifyObservers();// notify all the observers

}

}

2.观察者

Java代码 icon_copy.gificon_star.png

spinner.gif

package observer;

import java.util.Observable;

import java.util.Observer;

public class Reader implements Observer {

// when the observable changed ,

// it will notify all the observers and this method will be invoke

@Override

public void update(Observable o, Object arg) {

if(o instanceof Publisher){

Publisher p = (Publisher) o;

System.out.println("i want to read magazine. " + p.getMagazineName());

}

}

}

package observer;

import java.util.Observable;

import java.util.Observer;

public class Reader implements Observer {

// when the observable changed ,

// it will notify all the observers and this method will be invoke

@Override

public void update(Observable o, Object arg) {

if(o instanceof Publisher){

Publisher p = (Publisher) o;

System.out.println("i want to read magazine. " + p.getMagazineName());

}

}

}

3.测试类

Java代码 icon_copy.gificon_star.png

spinner.gif

package observer;

public class Main {

public static void main(String[] args) {

// create observer

Reader reader=new Reader();

// create observable

Publisher publisher = new Publisher();

// add observer

publisher.addObserver(reader);

// observable do some action

publisher.publish("I am antlove.");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值