Java设计模式-----Observer观察者模式

源自:http://www.blogjava.net/flustar/archive/2007/11/28/observer.html

Observer观察者模式:

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。

例子:

public interface Observer {
	 public void update(Children child);
}

public class Children {

	static private Vector
  
   obs;
	static private String state = null;
	static {
		obs = new Vector
  
  ();
	}

	public static void attach(Observer o) {
		obs.addElement(o);
	}

	public static void detach(Observer o) {
		obs.removeElement(o);
	}

	public void setState(String str) {
		state = str;
	}

	public String getState() {
		return state;
	}

	public void notifyObs() {
		for (Observer o : obs) {
			o.update(this);
		}
	}
}

public class Parent implements Observer {

	public void update(Children child) {
		if (child.getState().equals("fight")) {
			System.out.println("告诉Parent,他和别人打架了");
		} else if (child.getState().equals("scholarship")) {
			System.out.println("告诉Parent,他得到了奖学金");
		}
	}
}

public class Mother implements Observer {

	public void update(Children child) {
		if (child.getState().equals("fight")) {
			System.out.println("告诉Mother,他和别人打架了");
		} else if (child.getState().equals("scholarship")) {
			System.out.println("告诉Mother,他得到了奖学金");
		}
	}
}

public class Client {

	public static void main(String[] args) {
		Children child = new Children();
		Observer parent = new Parent();
		Observer mother = new Mother();
		Children.attach(parent);
		Children.attach(mother);
		child.setState("fight");
		child.notifyObs();
		child.setState("scholarship");
		child.notifyObs();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值