01观察者模式(一)

1.观察者定义了一种一对多依赖关系,让多个观察者同时监听某个主题对象。这个主题对象在状态上发生变化时,会通知所有的观者对象,让他们自动更新自己。----这里的主题对象就是被观察者

 

2.代码模拟

 

   抽象主题角色AbstractWatched.java

   public interface AbstractWatched {

	public void addWatcher(AbstractWatcher watcher);
	
	public void removeWatcher(AbstractWatcher watcher);
	
	public void removeAll();
	
	public void fire();
}

      具体主题角色ConcreteWatched.java

   public class ConcreteWatched implements AbstractWatched {

	private List<AbstractWatcher> watchers = new ArrayList<AbstractWatcher>();
	
	@Override
	public void addWatcher(AbstractWatcher watcher) {
		watchers.add(watcher);
	}

	@Override
	public void removeAll() {
		watchers.clear();
	}

	@Override
	public void removeWatcher(AbstractWatcher watcher) {
		watchers.remove(watcher);
	}

	@Override
	public void fire() {
		
		for(AbstractWatcher watcher : watchers){
			watcher.update();
		}
	}

}

 

   抽象观察者角色

   public interface AbstractWatcher {


	public void update();
} 

   

 

   具体观者角色

 

public class ConcreteWatcher implements AbstractWatcher {

	@Override
	public void update() {
		System.out.println("update.....");
	}

}

 

  测试代码:

 

	public static void main(String[] args) {
		//被观察者
		AbstractWatched watched = new ConcreteWatched();
		
		AbstractWatcher watcher1 = new ConcreteWatcher();
		AbstractWatcher watcher2 = new ConcreteWatcher();
		AbstractWatcher watcher3 = new ConcreteWatcher();
		
		watched.addWatcher(watcher1);
		watched.addWatcher(watcher2);
		watched.addWatcher(watcher3);
		
		watched.fire();
	}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值