單件模式
享元模式
狀態(tài)模式
備忘錄
組合模式
迭代器
職責(zé)鏈
命令模式
訪問器
解析器
本周作業(yè)
本次作業(yè)要求針對(duì)DrawingSystem中的基類Shape和各個(gè)子類Line残揉、Rec肆汹、Circle,請(qǐng)使用某種模式來支持更復(fù)雜的形狀油宜,該復(fù)雜形狀是各個(gè)形狀的自由組合希痴。使用松耦合面向?qū)ο笤O(shè)計(jì)方法和思想,可使用偽碼表示設(shè)計(jì)者甲。
首先想到的就是組合模式,將shape作為根節(jié)點(diǎn)砌创,具體的每一種形狀為葉子節(jié)點(diǎn)虏缸。復(fù)雜的圖形就相當(dāng)于一個(gè)存放shape的容器,只要將需要的圖形放入容器中嫩实,再將容器遍歷就可以得到復(fù)雜的圖形了刽辙。
將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。Composite使得用戶對(duì)單個(gè)對(duì)象和組合的使用具有一致性甲献。
組合模式有透明組合模式和安全組合模式宰缤。透明組合模式是將Addordinate和GetSubordinate這兩個(gè)函數(shù)也抽象到CCorpNode基類里,這增加了操作葉子節(jié)點(diǎn)的難度晃洒,更易出現(xiàn)邏輯問題撵溃。所以盡量使用安全模式。
按照上述思路锥累,具體的代碼實(shí)現(xiàn),見代碼提交部分集歇。