設計模式複習,代碼是最好的說明。
定義:觀察者模式定義對象間一種一對多的依賴關系,使得當每一個對象改變狀态,則所有依賴于它的對象都會得到通知并自動更新,屬于行為類模式。
注意:觀察者模式和釋出訂閱模式是有差別的,差別在于觀察者模式是由目标進行排程,而釋出訂閱模式是由獨立的排程中心進行排程,可以說釋出訂閱模式是觀察者模式進一步解耦,在實際中被大量運用的一種模式。
UML:
代碼:
abstract class Subject{
private Vector<Observer> vector = new Vector<Observer>();
public void addObserver(Observer observer){
this.vector.add(observer);
}
public void deleteObserver(Observer observer){
this.vector.remove(observer);
}
protected void notifyObserver(){
for (Observer observer:vector){
observer.update();
}
}
abstract void doSomething();
}
class ConcreteSubject extends Subject{
void doSomething() {
System.out.println("被觀察者事件發生");
this.notifyObserver();
}
}
interface Observer{
void update();
}
class ConcreteObserver1 implements Observer{
public void update() {
System.out.println("觀察者1收到");
}
}
class ConcreteObserver2 implements Observer{
public void update() {
System.out.println("觀察者2收到");
}
}
參考連結
http://blog.csdn.net/itachi85/article/details/50773358
http://www.cnblogs.com/lovesong/p/5272752.html
http://geeksun.iteye.com/blog/2232298
如有錯誤,歡迎指出!