《設計模式》 - 5. 介面卡模式( Adapter )
Javascript設計模式 - 原文連結
介面卡模式 (Adapter) :
語言 : JavaScript
以一個遊戲主角為例 , 剛開始主角只有(普通攻擊)和一個技能(重擊) .
//主角
var Character = cc.Class.extend({
Attack : function(){
console.log("普通攻擊");
},
Skill : function(){
console.log("重擊");
}
});
var character = new Character();
character.Attack(); //普通攻擊
character.Skill(); //重擊
當主角到達一定等級 , 轉職成了法師 , 攻擊方法發生改變 , 普通攻擊變成了 (火球) , 技能成了(火雨) . 但是程式碼中主角的攻擊和技能已經寫死了 , 這時候再呼叫 Attack() 和 Skill() 方法肯定會報錯 , 遇到這種情況就需要使用介面卡模式了 .
//主角
var Character = cc.Class.extend({
FireBall : function(){
console.log("火球");
},
FireRain : function(){
console.log("火雨");
}
});
var character = new Character();
character.Attack(); // 報錯 !!!
character.Skill(); // 報錯 !!!
繼承實現 :
通過繼承的方式 , 可以使得原始碼不改變的情況下可以呼叫新的方法(技能) .
//介面卡
var Adapter = Character.extend({
Attack : function(){
this.FireBall();
},
Skill : function(){
this.FireRain();
}
});
var character = new Adapter();
character.Attack(); //火球
character.Skill(); //火雨
委派實現 :
通過委派的方式 , 可以使得原始碼不改變的情況下可以呼叫新的方法(技能) .
//介面卡
var Adapter = cc.Class.extend({
character : null,
//建構函式 ctor
ctor : function(character){
this.character = character;
},
Attack : function(){
this.character.FireBall();
},
Skill : function(){
this.character.FireRain();
}
});
var character = new Adapter(new Character());
character.Attack(); //火球
character.Skill(); //火雨
介面卡模式通常在多人合作的專案中使用較多 , 在多人合作專案中 , 每個人完成自己的模組 , 通常會出現方法名 呼叫以自己習慣的方式命名 , 從而出現對接問題 , 又因為專案中高頻出現 , 不方便修改 , 所以經常使用介面卡 .
相關文章
- PHP設計模式-Adapter 介面卡模式PHP設計模式APT
- 設計模式之介面卡模式(adapter pattern)設計模式APT
- Scala 與設計模式(五):Adapter 介面卡模式設計模式APT
- C#設計模式-介面卡模式(Adapter Pattern)C#設計模式APT
- 人人都會設計模式:介面卡模式--Adapter設計模式APT
- 12/24 設計模式之介面卡模式 Adapter Pattern設計模式APT
- Rust語言之GoF設計模式:介面卡AdapterRustGo設計模式APT
- 一天一個設計模式(五) - 介面卡模式(Adapter)設計模式APT
- 介面卡模式(adapter pattern)模式APT
- Adapter-介面卡模式APT模式
- 設計模式:介面卡模式設計模式
- 設計模式-介面卡模式設計模式
- 設計模式----介面卡模式設計模式
- 【設計模式】介面卡模式設計模式
- 設計模式--介面卡模式/代理模式設計模式
- 設計模式系列之介面卡模式(Adapter Pattern)——不相容結構的協調設計模式APT
- python 設計模式-介面卡模式Python設計模式
- 設計模式之介面卡模式設計模式
- JavaScript 設計模式 —— 介面卡模式JavaScript設計模式
- java設計模式-介面卡模式Java設計模式
- 設計模式(七)介面卡模式設計模式
- 設計模式(五):介面卡模式設計模式
- 設計模式之【介面卡模式】設計模式
- Java設計模式之介面卡設計模式Java設計模式
- 設計者模式之介面卡模式模式
- python設計模式之介面卡模式Python設計模式
- PHP設計模式(2)—— 介面卡模式PHP設計模式
- Java 設計模式(一)《介面卡模式》Java設計模式
- Javascript 設計模式之介面卡模式JavaScript設計模式
- PHP 設計模式之介面卡模式PHP設計模式
- Java設計模式之介面卡模式Java設計模式
- 設計模式【6.1】-- 初探介面卡模式設計模式
- 極簡設計模式-介面卡模式設計模式
- Java設計模式(6)----------介面卡模式Java設計模式
- 介面卡設計模式設計模式
- 設計模式 #4 (裝飾器模式、介面卡模式)設計模式
- 設計模式第五講-介面卡模式設計模式
- C#設計模式之介面卡模式C#設計模式