文章出處
文章列表
忙里抽閑,繼續學習設計模式,作為自己的讀書筆記,這次介紹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 }
運行之后的結果。
至此,觀察者模式介紹完畢。
文章列表
全站熱搜