- 入門
多くの、一方の当事者の状態変化は、それに依存する場合、複数の当事者が通知され、自動的に更新されます - パブリッシュ/サブスクライブ・モデルとして知られているObserverパターンは、オブザーバーパターンは、オブジェクト間の依存関係を定義します。
- クラス図
- コード
パブリック インターフェースオブザーバ{ 公共 ボイド更新(文字情報) } パブリック クラス StudentObserverが実装オブザーバー{ プライベート文字列名を、 プライベートTeacherSubject teacherSubject。 公共StudentObserver(文字列名、TeacherSubject teacherSubject){ この .nameの= 名前。 この .teacherSubject = teacherSubject。 teacherSubject.addObserver(この); } 公共 ボイド更新(文字情報){ System.out.printlnは(名前+ "得到作业:" + 情報)。 } } パブリック インターフェイス件名{ 公共 ボイドaddObserver(観察者の観察者) 公共 ボイドdeleteObserver(オブザーバーオブザーバー)。 公共 ボイドnotifyObserver(); } パブリック クラス TeacherSubjectが実装サブジェクト{ プライベートリスト<オブザーバー>オブザーバー= 新規のArrayList <オブザーバー> (); プライベート文字列情報。 公共 ボイドaddObserver(観察者の観察者){ observers.add(観察)。 } 公共 ボイドdeleteObserver(観察者の観察者){ observers.remove(観察)。 } 公共 ボイドnotifyObserver(){ ための(観察者の観察者: 観察者){ observer.update(情報)。 } } 公共 ボイドsetHomeWork(文字情報){ 本の.info = インフォメーション。 System.out.println( "今天的作业是" + 情報)。 この.notifyObserver(); } } パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ TeacherSubject教師 = 新しいTeacherSubject()。 StudentObserver zhangSan = 新 StudentObserver( "张三" 、先生)。 StudentObserverリージ = 新 StudentObserver( "李四" 、先生)。 StudentObserver WangWu = 新 StudentObserver( "王五" 、先生)。 teacher.setHomeWork( "数据库课设" ); } }