代碼為示意代碼,真實代碼還有更多細節需要處理
是的,就這么簡單。我們看到系統正常的工作了。也許你會問,那它是什么模式呢?我前面提過它是一種模式來著的。是的。它應該是組合模式(Composite Pattern)的一種退化形式。那為什么說他是退化的形式呢?我們先來看一下,組合模式的定義:
合成(Composite)模型模式屬于對象的結構模式[GOF95],有時又叫做部分-整體(Part-Whole)模式。合成模式將對象組織到樹結構中,可以用來描述整體與部分的關系。合成模式可以客戶端將單純元素與復合元素同等看待。
引用自《Java與模式》閻宏
從這個定義可以看出合成模式大致有三個特點,一具用兩種對象,簡單對象和復雜對象,但兩種對象對客戶程序具有相同接口,二具有層次結構。三具有遞歸特性。
從這些條件看來,我們的系統確實簡單的多,對于客戶程序來說,完全不知道有復雜對象,由于工廠的介入,系統不會有遞歸的情況出現,并且,對于該系統也沒有遞歸的要求。其實,這個輸出系統是組合模式,工廠模式,及寬窄接口方式綜合的來解決問題的。若上來就硬套一種模式的話,一定會帶來很大的煩麻。
原文轉自:http://www.anti-gravitydesign.com