2013年12月19日 星期四

重構-向範式前進 Refacttoring to Patterns(3)-創建Move Creation Knowledge to Factory


  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 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

沒有留言:

張貼留言