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
相關文章
- JavaScript原生實現觀察者模式JavaScript模式
- 觀察者模式在 Javascript 中的應用模式JavaScript
- JS原生實現觀察者模式JS模式
- javascript設計模式觀察者模式JavaScript設計模式
- 原生實現的觀察者模式(Observer Model)模式Server
- ListView中的觀察者模式View模式
- JavaScript設計模式之觀察者模式JavaScript設計模式
- JavaScript 設計模式系列 - 觀察者模式JavaScript設計模式
- 使用函式式實現觀察者模式模式函式模式
- 設計模式(python實現):觀察者模式設計模式Python
- JavaScript設計模式與開發實踐 – 觀察者模式JavaScript設計模式
- 設計模式中的觀察者模式設計模式
- 三種觀察者模式的C#實現模式C#
- PHP實現觀察者模式SplSubject SplObserver SplObjectStoragePHP模式ServerObject
- Go 實現常用設計模式(五)觀察者模式Go設計模式
- Spring中的觀察者模式Spring模式
- JS中的觀察者模式DEMOJS模式
- 實現觀察者模式(Observer Pattern)的2種方式模式Server
- 《JavaScript設計模式與開發實踐》模式篇(5)—— 觀察者模式JavaScript設計模式
- JavaScript 觀察者 (釋出/訂閱) 模式JavaScript模式
- JavaScript設計模式經典之觀察者模式JavaScript設計模式
- 設計模式學習-使用go實現觀察者模式設計模式Go
- 觀察者模式——RecyclerView中的應用模式View
- Android 中的設計模式:觀察者模式Android設計模式
- Java中的設計模式(一):觀察者模式Java設計模式
- 設計模式實戰 - 觀察者模式設計模式
- 設計模式實踐--觀察者模式設計模式
- 觀察者模式的實際應用模式
- 理解javascript觀察者模式(訂閱者與釋出者)JavaScript模式
- javascript(js) 觀察者模式和釋出訂閱模式JavaScriptJS模式
- JavaScript設計模式 觀察者模式(釋出訂閱)JavaScript設計模式
- 如何使用 Java8 實現觀察者模式?(下)Java模式
- 深入理解RxJava中的觀察者模式RxJava模式
- 剪貼簿中的觀察者(Observer)模式Server模式
- 觀察者模式模式
- 【設計模式】漢堡中的設計模式——觀察者模式設計模式
- 三種方式實現觀察者模式 及 Spring中的事件程式設計模型模式Spring事件程式設計模型
- Java中的設計模式(二):生產者-消費者模式與觀察者模式Java設計模式