看看用TypeScript怎樣實現常見的設計模式,順便復習一下。
學模式最重要的不是記UML,而是知道什么模式可以解決什么樣的問題,在做項目時碰到問題可以想到用哪個模式可以解決,UML忘了可以查,思想記住就好。
這里盡量用原創(chuàng)的,實際中能碰到的例子來說明模式的特點和用處。

組合模式 Composite

特點:以樹的形式展示對象的組合,并且可以以類似的方式處理每個枝點。

用處:當對象組合以樹狀存在,有父有子,并且對象的行為差不多時可以考慮組合模式,如菜單,游戲里的技能樹。

注意:遍歷組合的性能要求。

下面用TypeScript簡單實現一下組合模式:
技能樹麻煩了點,技能激活要引入觀察者模式,就以菜單為例吧。
菜單可以包括子菜單,點擊菜單項時有子菜單則顯示子菜單,沒有時觸發(fā)點擊事件。

先聲明一個抽象,包含菜單的名字,點擊事件和添加Child,一般情況下Menu會維護一個childs集合,通過這個集合來添加子菜單,不過這里沒有用這種方式,采用的是繼承一個集合來讓本身擁有集合的能力,這樣更方便,是父還是子可以通過字段來控制,也可以通過是否有child來表示。

abstract class MenuBase extends Array<M
        
		

網友評論