15、观察者模式

定义
观察者模式:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并自动更新。
意义
此设计模式最重要的作用就是 解耦!将观察者与被观察者解耦,使得他们之间的依赖性更小。

public interface Observer {  
	public void update();  
}  
public class Observer1 implements Observer {  
  	@Override  
	public void update() {  
		System.out.println("observer1 has received!");  
	}  
}  
public class Observer2 implements Observer {  
    @Override  
	public void update() {  
		System.out.println("observer2 has received!");  
	}  
}  
public interface Subject {  
	public void add(Observer observer);  //增加观察者
	public void del(Observer observer);  //删除观察者
	public void notifyObservers();  	 //通知所有的观察者
	public void operation();  			 //自身的操作
}  
public abstract class AbstractSubject implements Subject {    
	private Vector<Observer> vector = new Vector<Observer>();  
	@Override  
	public void add(Observer observer) {  
		vector.add(observer);  
	}  
	@Override  
	public void del(Observer observer) {  
		vector.remove(observer);  
	}  
	@Override  
	public void notifyObservers() {  
		Enumeration<Observer> enumo = vector.elements();  
		while(enumo.hasMoreElements()){  
			enumo.nextElement().update();  
		}  
	}  
}  
public class MySubject extends AbstractSubject {  
	@Override  
	public void operation() {  
		System.out.println("update self!");  
		notifyObservers();  
	}  
}  
//测试类:
public class ObserverTest {  
	public static void main(String[] args) {  
		Subject sub = new MySubject();  
		sub.add(new Observer1());  
		sub.add(new Observer2());  
		sub.operation();  
	}  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值