文章出處

忙里抽閑,繼續學習設計模式,作為自己的讀書筆記,這次介紹Java下實現的觀察者模式。

觀察模式需要了解的三個概念:

被觀察者:被觀察的對象,發生變化會通知觀察者集合(存放觀察者的容器)

觀察者:有update方法,當觀察者發生變化的時候,update方法會被調用

主類:實例化觀察者,并向被觀察者,添加觀察者對象。

 

追求目標:被觀察變化,觀察者做出反應!!!

實現如下:

Game類,就是一個普通對象,被GameMan類管理。

 1 public class Game {
 2     String name = "";
 3     String company = "";
 4     
 5     public String getName() {
 6         return name;
 7     }
 8     public void setName(String name) {
 9         this.name = name;
10     }
11     public String getCompany() {
12         return company;
13     }
14     public void setCompany(String company) {
15         this.company = company;
16     }
17 }

GameMan類,有發布Game的方法,并適時做出改變。

 1 import java.util.Observable;
 2 
 3 public class GameMan extends Observable {
 4     public void PublishGame(String name, String company)
 5     {
 6         Game game = new Game();
 7         game.setName(name);
 8         game.setCompany(company);
 9         this.setChanged();
10         this.notifyObservers(game);
11     }
12 }

MyObserver類,實現update接口。處理一些被觀察者發生變化后的操作。

 1 import java.util.Observable;
 2 import java.util.Observer;
 3 
 4 public class MyObserver implements Observer {
 5 
 6     @Override
 7     public void update(Observable o, Object arg) {
 8         System.out.println("游戲管理者發布了新游戲!");
 9         Game game = (Game)arg;
10         System.out.println("新游戲的名字:" + game.getName());
11         System.out.println("新游戲的開發公司:" + game.getCompany());
12     }
13 }

MainClass類,主類,向被觀察者注冊觀察者。

1 public class MainClass {
2     public static void main(String[] args) {
3         GameMan gameMan = new GameMan();
4         gameMan.addObserver(new MyObserver());
5         gameMan.PublishGame("NGame", "WhiteTaken");
6     }
7 }

運行之后的結果。

至此,觀察者模式介紹完畢。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()