<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## **模式的定義** 觀察者模式主要用于1對N的通知。當一個對象的狀態變化時,他需要及時告知一系列對象,令他們做出相應。 ## **代碼實現** 1. 定義觀察者接口 ``` public interface Observer { // 接到通知后的處理 void update(Subject subject); } ``` 2. 實現觀察者方法 ``` public class ObserverImpl implements Observer { @Override public void update(Subject subject) { System.out.println("觀察者修改數據:" + subject.getData()); } } ``` 3. 創建抽象的觀察的主題 ``` public abstract class Subject { // 存儲觀察者的列表 private List<Observer> observers = new ArrayList<>(); // 注冊觀察者 public void registerObserver(Observer obs) { observers.add(obs); } // 刪除觀察者 public void removerObserver(Observer obs) { observers.remove(obs); } // 廣播 public void broadcast() { for (Observer observer : observers) { observer.update(this); } } // 留給子類實現的抽象方法 public abstract Object getData(); } ``` 4. 創建具體的觀察主題 ``` public class SubjectA extends Subject { private int state; public int getState() { return state; } public void setState(int state) { this.state = state; this.broadcast(); } @Override public Object getData() { return state; } } ``` 5. 客戶端調用 ``` public static void main(String[] args) { // 實例化多個觀察者 ObserverImpl obs1 = new ObserverImpl(); ObserverImpl obs2 = new ObserverImpl(); ObserverImpl obs3 = new ObserverImpl(); // 創建觀察主題 SubjectA subject = new SubjectA(); // 注冊觀察者 subject.registerObserver(obs1); subject.registerObserver(obs2); subject.registerObserver(obs3); subject.setState(100); } ``` 執行結果 ``` 觀察者修改數據:100 觀察者修改數據:100 觀察者修改數據:100 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看