設計思想與模式之五觀察者模式
阿新 • • 發佈:2017-06-01
per -- 什麽 over out junit 測試類 rem second
1.被觀察者接口
一 概述
1.什麽是觀察者模式?
將一個對象視作被觀察者,當它發出某種行為或者發生某種變化時,通知所有依賴它的對象(觀察者),這種設計模式叫做觀察者設計模式。
2.觀察者設計模式的用途
用於處理一對多的依賴關系,當一個對象的狀態發生改變時,通知所有依賴於它的對象,這些對象收到通知以後采取相應的處理措施。
二 觀察者模式構成
- 被觀察者接口:包含添加觀察者、刪除觀察者、通知觀察者等操作。
- 被觀察者:實現了被觀察者接口,一個具體的被觀察者。
- 觀察者接口:處理被觀察者的通知。
- 觀察者:實現了觀察者接口,一個具體的觀察者。
三 實現Demo
1.被觀察者接口
package com.designmode.observer.demo01; public interface IObserver { void handleNotify(String message); }
2.被觀察者
package com.designmode.observer.demo01; import java.util.ArrayList; import java.util.List; public class Performer implements IObservable { private List<IObserver> observers;public Performer() { super(); observers = new ArrayList<IObserver>(); } @Override public void addObserver(IObserver observer) { // TODO Auto-generated method stub observers.add(observer); } @Override public void removeObserver(IObserver observer) {// TODO Auto-generated method stub observers.remove(observer); } @Override public void notifyObservers(String message) { // TODO Auto-generated method stub for (IObserver observer : observers) { observer.handleNotify(message); } } }
3.觀察者接口
package com.designmode.observer.demo01; public interface IObservable { void addObserver(IObserver observer); void removeObserver(IObserver observer); void notifyObservers(String message); }
4.觀察者一
package com.designmode.observer.demo01; public class FirstObserver implements IObserver { @Override public void handleNotify(String message) { // TODO Auto-generated method stub System.out.println("觀察者FirstObserver接收到消息----[" + message + "]----正在處理"); } }
5.觀察者二
package com.designmode.observer.demo01; public class SecondObserver implements IObserver { @Override public void handleNotify(String message) { // TODO Auto-generated method stub System.out.println("觀察者SecondObserver接收到消息----[" + message + "]----正在處理"); } }
6.測試類
package com.designmode.observer.demo01; import org.junit.Test; public class ObserverTest { @Test public void test01() { /** * 創建觀察者 */ IObserver firstObserver = new FirstObserver(); IObserver secondObserver = new SecondObserver(); IObservable performer = new Performer();// 創建被觀察者 /** * 添加觀察者 */ performer.addObserver(firstObserver); performer.addObserver(secondObserver); performer.notifyObservers("被觀察者發生變化"); } }
設計思想與模式之五觀察者模式