观察者模式

观察者模式:
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
当一个对象放生改变,所有的依赖对象都将得到通知时使用。
关键代码:在抽象类里有一个 ArrayList 存放观察者们。
import java.util.Observable;
import java.util.Observer;
public class Demo {
public static void main(String[] args) {
wolf w = new wolf(“wolf1”);
sheep s1 = new sheep(“s1”);
sheep s2 = new sheep(“s2”);
sheep s3 = new sheep(“s3”);
w.addObserver(s1);
w.addObserver(s2);
String state = “hungry”;
w.shout(state);
}
}
class wolf extends Observable{
private String name;
public wolf(String name) {
this.name = name;
}
public void shout(String state) {
System.out.println(name+“shouting”);
this.hasChanged();
this.notifyObservers(state);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}
class sheep implements Observer{
private String name;
private String state = “eating”;
public sheep(String name) {
this.name = name;
}

@Override
public void update(Observable o, Object arg) {
	// TODO Auto-generated method stub
	wolf w = (wolf)o;
	System.out.println(w.getName()+"shouting and "+arg+" "+this.name+"running....");
	setState("running");
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}
public String getState() {
	return state;
}
public void setState(String state) {
	this.state = state;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值