javascript中的觀察者模式實現
比如有這樣一個場景,一款遊戲玩家在等級1~10之間可以領取3000點經驗,等級11級以上可以領取2000點經驗.
我們可以用觀察者模式來實現這個需求.
這裡玩家就是一個觀察者,或者說是一個訂閱者,遊戲系統就是一個被觀察者,或者說一個傳送者
我們可以用觀察者模式來實現這個需求.
這裡玩家就是一個觀察者,或者說是一個訂閱者,遊戲系統就是一個被觀察者,或者說一個傳送者
下面用程式碼來實現:
<script type="text/javascript">
// 經驗系統
var Experience = function(param) {
this.name = param.name;
// 經驗值
this.expVal = param.expVal;
this.players = [];
}
// 發放經驗
Experience.prototype.giveExp = function(player) {
console.log("系統送給[" + player.name + "]" + this.expVal + "點經驗.");
}
// 玩家
var Player = function(param) {
this.name = param.name;
}
// 申請經驗模式
Player.prototype.apply = function(experience) {
var players = experience.players;
var isExist = false;
for(var i=0,len=players.length;i<len;i++) {
if(players[i] == this) {
isExist = true;
break;
}
}
if(!isExist) {
players.push(this);
}
return this;
}
// 領取經驗
Player.prototype.getExp = function(experience) {
var players = experience.players;
for(var i=0,len=players.length;i<len;i++) {
if(players[i] == this) {
experience.giveExp(this);
break;
}
}
return this;
}
// 測試
// 申明玩家
var player1 = new Player({"name":"張三"}); // 玩家1,等級4
var player2 = new Player({"name":"李四"}); // 玩家2,等級12
// 申明經驗系統
var exp2000 = new Experience({name:"2000點經驗",expVal:2000});
var exp3000 = new Experience({name:"3000點經驗",expVal:3000});
// 等級1~10能申請3000點經驗
player1.apply(exp3000);
// 等級11以上能申請2000點經驗
player2.apply(exp2000);
// 去NPC處領取經驗:
player1.getExp(exp3000);
player2.getExp(exp2000);
/*
輸出:
系統送給[張三]3000點經驗.
系統送給[李四]2000點經驗.
*/
</script>
url=http://topic.csdn.net/u/20120601/17/ee8ee2c3-8ccd-499a-9cda-35b0e8446e47.html?seed=1266795420&r=78744239#r_78744239
相關文章
- JS原生實現觀察者模式JS模式
- 設計模式(python實現):觀察者模式設計模式Python
- 原生實現的觀察者模式(Observer Model)模式Server
- JavaScript設計模式之觀察者模式JavaScript設計模式
- Spring中的觀察者模式Spring模式
- 使用函式式實現觀察者模式模式函式模式
- 設計模式中的觀察者模式設計模式
- JS中的觀察者模式DEMOJS模式
- PHP實現觀察者模式SplSubject SplObserver SplObjectStoragePHP模式ServerObject
- Go 實現常用設計模式(五)觀察者模式Go設計模式
- Android 中的設計模式:觀察者模式Android設計模式
- 實驗 21:觀察者模式模式
- 觀察者模式模式
- 《JavaScript設計模式與開發實踐》模式篇(5)—— 觀察者模式JavaScript設計模式
- 設計模式實戰 - 觀察者模式設計模式
- 觀察者模式的實際應用模式
- 觀察者模式——RecyclerView中的應用模式View
- 設計模式學習-使用go實現觀察者模式設計模式Go
- Java中的設計模式(一):觀察者模式Java設計模式
- javascript(js) 觀察者模式和釋出訂閱模式JavaScriptJS模式
- 11.22實驗 21:觀察者模式模式
- PHP觀察者模式PHP模式
- 觀察者模式(2)模式
- Unity——觀察者模式Unity模式
- 觀察者模式-將訊息通知給觀察者模式
- RxJS 中的觀察者和迭代器模式JS模式
- 進擊的觀察者模式模式
- 設計模式 —— 觀察者模式設計模式
- 設計模式(觀察者模式)設計模式
- 設計模式----觀察者模式設計模式
- 【設計模式】觀察者模式設計模式
- 設計模式——觀察者模式設計模式
- JavaScript 設計模式之觀察者模式與釋出訂閱模式JavaScript設計模式
- 【設計模式】漢堡中的設計模式——觀察者模式設計模式
- 三種方式實現觀察者模式 及 Spring中的事件程式設計模型模式Spring事件程式設計模型
- observer-觀察者模式Server模式
- 重構 - 觀察者模式模式
- 18_觀察者模式模式
- PHP-觀察者模式PHP模式