6.2 Move Creation Knowledge to Factory
有Creation sprawl 發生時,把所有需要的資訊集中在Factory中
讓Factory來處理
解決參數有時候沒有用到 卻一直傳遞下去的問題
直接一次到位
ex: client呼叫 class A傳 c參數給class B ,B又傳給class C
但其實c只有在class C才有用到
有Creation sprawl 發生時,把所有需要的資訊集中在Factory中
讓Factory來處理
解決參數有時候沒有用到 卻一直傳遞下去的問題
直接一次到位
ex: client呼叫 class A傳 c參數給class B ,B又傳給class C
但其實c只有在class C才有用到
+.可統合創建邏輯(creation logic)和instantiaion/configuration
+.將客戶端和creation logic解除爾合(decouple)
-.比直接具現(direct instantiation)更複雜
1.instantiator是一個 與其他classes合作具現出某個product的class,如果instantiator未使用Creation Method來具現product
,修改他 讓他以creation method發生
2.產生一個即將成為Factory的新class, 其該如何命名,視其創建出的什麼實體而定
3.Move Method.把creation method 移到Factory
4.令instantiator改而具現Factory,然後呼叫Factory獲得一個實體
5.若扔有其他classes的資料和函式在具現任務中使用,只要合理 進可能搬到Factory,讓Factory盡可能處理創建任務的一切
範例可參考
http://www.allenkuo.com/GenericArticle/view358.aspx
範例可參考
http://www.allenkuo.com/GenericArticle/view358.aspx
沒有留言:
張貼留言