觀察者模型

可即時得知被觀察者資料異動通知,也是共用元件常用模型之一

需求題目

當學生需隨時得老師資訊,且可以隨時加入監控老師或取消監控老師行為,老師行為為「點名」,學生收到通知,將可立即回覆。

  • 老師:被觀察者,當特定行為學生可即時通知

  • 學生:觀察者:可同步收到被觀察者異動訊息,並可得知被觀察者狀態

/**
 * 被觀察者
 */
public interface IObservable<T> {
    /**
     * 取得資料
     * @return
     */
    T getData();


    /**
     * 加入
     * @param observer
     */
    void add(IObserver<T>observer);

    /**
     * 移除觀察者
     * @param observer
     */
    void remove(IObserver<T>observer);

    /**
     * 通知所有觀察者
     */
    void notifyObservers();
}


/**
 * 觀察者
 * @param <T>
 */
public interface IObserver<T> {

    /**
     * 更新
     * @param IObservable
     */
    void update(IObservable<T> IObservable);
}


Last updated

Was this helpful?