簡單工廠github
設計模式學習之適配器模式設計模式
設計模式學習之工廠方法模式post
Demo傳送門學習
案例:關於導出數據的的應用框架,能夠導出成文本格式,XML格式,Excel格式等。對於導出的文件中主要分爲如下三個部分: 頭文件:主要描述信息是分公司或者門市點編號,導出數據的日期,文本格式中間用逗號分離 文件主體部分:包括表名稱,分條描述數據,對於文本格式,表名稱獨佔一行,數據描述一行算一條數據,字段間用逗號分隔 文件尾部:主要是輸入人。ui
下面爲了突出生成器模式,咱們先用通常的方法來解決:設計
首先來定義header,data,footer的數據源3d
以後看下ExportToTxt和ExportToXML的實現
客戶端調用
運行結果
從上面的結構能夠看出,導出Txt或者XML都須要拼接頭,主體和尾部內容,完了會輸出成爲文件,對於不一樣的輸出格式,步驟都是同樣的,可是以上述方法存在如下問題:
1.重複處理步驟 2.不利於擴展其餘格式的文件
理想中的狀態應該是構建每種格式的數據文件處理過程和具體的實現步驟應該是分開的,這樣能夠很好地切換不一樣的文件格式,那麼這樣該如何實現呢?下面就進入生成器模式的學習。
定義
將一個複雜對象的構建和它的表示分離,使得一樣的構建過程能夠建立不一樣的表示
生成器模式的結構類圖
對於上圖中的結構元素的功能說明:
針對案例,用生成器模式來寫,具體以下:
具體步驟以下:
1.規定協議規範,也就是builder
2.實現Builder的具體產品,這裏分爲TxtBuilder,XMLBuilder
3.組合類,也就是Director,主要是組裝各個部件
4.客戶端調用
從上述已經能夠很清楚的明白生成器的實現結構和模式,主要就是對同一個構建過程,配置不一樣的生成器實現,就會生成不一樣的表現。
生成器模式有如下優勢
鬆散耦合,將產品的構建和表現徹底分離,將構建過程獨立出來,使得構建算法可複用,具體表現能夠靈活方便地擴展和切換
能夠很容易地改變產品的內部表示
具備更好的複用性
生成器模式的本質就是分離總體構建算法和部件構造,那麼使用該模式的場景以下: