《設計模式》 - 7. 組合模式( Composite )
Javascript設計模式 - 原文連結
組合模式 ( Composite ) :
語言 : JavaScript
說明 :
以一個遊戲角色為例 , 人物角色的技能表為 主選單 (skillMenu) , 主選單 包含 冰系技能選單 ( iceSkillMenu ) 和 火系技能選單 ( fireSkillMenu ) , 選單裡面分別還有對應屬性技能 .
適用情況 :
像上面舉例的這種情況 , 技能表 和 屬性技能 , 還有單個技能之間層次關係分明 , 就可以使用組合模式 .
作用 :
使得程式碼結構清晰 , 層次分明 , 便於修改 .
元件模式結構 :
元件類 ( Component ) :
元件類是元件模式的核心部分 , 以技能選單為例 , 技能需要繼承元件類 , 子系技能選單需要繼承元件類 , 主選單也要繼承 , 他們具有共同的方法和屬性 .
var Component = cc.Class.extend({
children: null,
name: null,
ctor: function(name){
this.name = name;
this.children = new Object();
},
add: function(child){
this.children[child.getName()] = child;
},
remove: function(child){
delete this.children[child.getName()];
},
getName: function(){
return this.name;
},
show: function(){
for(var index in this.children)
{
console.log(this.children[index].getName());
this.children[index].show();
}
}
});
客戶類 ( Client ) :
var iceSkillMenu = new Component("冰系技能");
var iceArrow = new Component("技能 - 寒冰箭");
var iceRain = new Component("技能 - 暴風雨");
iceSkillMenu.add(iceArrow);
iceSkillMenu.add(iceRain);
var fireSkillMenu = new Component("火系技能");
var fireBall = new Component("技能 - 火球術");
var fireWall = new Component("技能 - 火牆");
fireSkillMenu.add(fireBall);
fireSkillMenu.add(fireWall);
var skillMenu = new Component("技能選單");
skillMenu.add(iceSkillMenu);
skillMenu.add(fireSkillMenu);
skillMenu.show(); // 顯示技能選單
結果顯示 :
相關文章
- [C++設計模式] composite 組合模式C++設計模式
- 設計模式之組合模式(Composite)分享設計模式
- 設計模式之組合模式---Composite Pattern設計模式
- C#設計模式-組合模式(Composite Pattern)C#設計模式
- C#設計模式系列:組合模式(Composite)C#設計模式
- 設計模式--組合模式Composite(結構型)設計模式
- 設計模式的征途—9.組合(Composite)模式設計模式
- 組合模式(Composite)模式
- JAVA設計模式(10):結構型-組合模式(Composite)Java設計模式
- 【設計模式自習室】結構型:組合模式 Composite設計模式
- composite pattern(組合模式)模式
- 組合模式(Composite)的安全模式與透明模式模式
- 【設計模式】組合模式設計模式
- 設計模式《組合模式》設計模式
- 設計模式-組合模式設計模式
- 設計模式:組合模式設計模式
- 我所理解的設計模式(C++實現)——組合模式(Composite Pattern)設計模式C++
- js設計模式–組合模式JS設計模式
- js設計模式--組合模式JS設計模式
- 設計模式系列 – 組合模式設計模式
- javascript設計模式組合模式JavaScript設計模式
- 設計模式(十三):組合模式設計模式
- 設計模式系列之組合模式(Composite Pattern)——樹形結構的處理設計模式
- 使用C# (.NET Core) 實現組合設計模式 (Composite Pattern)C#設計模式
- PHP 設計模式之組合模式PHP設計模式
- GoLang設計模式20 - 組合模式Golang設計模式
- 設計模式【11】-- 搞定組合模式設計模式
- 【C++設計模式】組合模式C++設計模式
- 徒手擼設計模式-組合模式設計模式
- 極簡設計模式-組合模式設計模式
- 設計模式系列之「組合模式」設計模式
- 大話設計模式—組合模式設計模式
- 軟體設計模式————(組合模式)設計模式
- 23種設計模式之組合模式設計模式
- 《Head First 設計模式》:組合模式設計模式
- Java設計模式之(十)——組合模式Java設計模式
- 【趣味設計模式系列】之【組合模式】設計模式
- javascript設計模式 之 7組合模式JavaScript設計模式