先附上觀察者模式的一個測試代碼。
有空再仔細寫一下。
- package com.hbq.test;
- import java.util.ArrayList;
- /*觀察者模式*/
- /*觀察者接口*/
- interface Observer
- {
- public void update(String context);
- }
- interface Observable
- {
- public void addObserver(Observer obj);
- public void deleteObserver(Observer obj);
- public void notifyObserver(String context);
- }
- class Hanfeizi implements Observable
- {
- ArrayList<Observer> observer = new ArrayList();
- @Override
- public void addObserver(Observer obj) {
- // TODO Auto-generated method stub
- this.observer.add(obj);
- }
- @Override
- public void deleteObserver(Observer obj) {
- // TODO Auto-generated method stub
- this.observer.remove(obj);
- }
- @Override
- public void notifyObserver(String context) {
- // TODO Auto-generated method stub
- for( Observer obj:observer)
- {
- obj.update(context);
- }
- }
- public void haveFun()
- {
- System.out.println("韓非子:開始娛樂啦...");
- this.notifyObserver("韓非子在娛樂!");
- }
- public void haveBreakfast()
- {
- System.out.println("韓非子:開始吃飯啦...");
- this.notifyObserver("韓非子在吃飯!");
- }
- }
- class Lisi implements Observer
- {
- @Override
- public void update(String context) {
- // TODO Auto-generated method stub
- System.out.println("李斯:觀察到韓非子活動啦,開始向老闆彙報....");
- this.reportToQinshihuang(context);
- System.out.println("李斯:彙報完畢,秦老闆賞給他兩個蘿蔔吃吃....\n");
- }
- public void reportToQinshihuang(String repContext)
- {
- System.out.println("李斯:報告,秦老闆!韓非子有活動啦--->"+repContext);
- }
- }
- class Wangsi implements Observer
- {
- @Override
- public void update(String context) {
- // TODO Auto-generated method stub
- System.out.println("王四:觀察到韓非子活動啦,開始向老闆彙報....");
- this.reportToQinshihuang(context);
- System.out.println("王四:彙報完畢,秦老闆賞給他兩個蘿蔔吃吃....\n");
- }
- public void reportToQinshihuang(String repContext)
- {
- System.out.println("王四:報告,秦老闆!韓非子有活動啦--->"+repContext);
- }
- }
- class Zhangsi implements Observer
- {
- @Override
- public void update(String context) {
- // TODO Auto-generated method stub
- System.out.println("張四:觀察到韓非子活動啦,開始向老闆彙報....");
- this.reportToQinshihuang(context);
- System.out.println("張四:彙報完畢,秦老闆賞給他兩個蘿蔔吃吃....\n");
- }
- public void reportToQinshihuang(String repContext)
- {
- System.out.println("張四:報告,秦老闆!韓非子有活動啦--->"+repContext);
- }
- }
- public class test {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Observer lisi = new Lisi();
- Observer wangsi = new Wangsi();
- Observer zhangsi = new Zhangsi();
- Hanfeizi hanfeizi = new Hanfeizi();
- hanfeizi.addObserver(lisi);
- hanfeizi.addObserver(wangsi);
- hanfeizi.addObserver(zhangsi);
- hanfeizi.haveFun();
- hanfeizi.haveBreakfast();
- }
- }