2011年3月28日 星期一

Gof Creational - Design pattern (Abstract Factory Pattern)

DP大致分類有三種,Creational / Structural / Behavioral ,但這麼多 根本記不起來,最佳的學習途徑是,看著一張圖表,然後實際用自己工作的案例來實作寫code,才能真的學會了Q_Q

Abstract Factory Pattern

[caption id="attachment_138" align="alignnone" width="600" caption="Abstract Factory Pattern"]Abstract Factory Pattern[/caption]

上圖的 Abstract Factory ,讓我想想什麼場合會用到?

根據圖上的描述,在不同的場合中,有不同的實作品的話,那麼也許拿來作為DaoFactory的設置挺適合的,

對於不同的DB來源,我以不同的實作內容提供connection,這個做法在6年前我第一次看到洲平的ConnDB util時,

就有印象了。

Q1 :那好處是啥?

A1-1: 有效區隔出實作的類別,不會有互相混淆的情況

A1-2: 很容易的抽換物件工廠實作品

A11-3: 透過同一個工廠產出的物件彼此之間保持著高度的一致性

Q 2: 那到底什麼時候很需要來用這種pattern勒?

A2-1: 對於實作產出的物件要跟系統盡可能的抽離,降低耦合度的時候需要。

A2-2 : 需要透過設定檔方式去產出不同物件實體時可以使用。

A2-3 : 當我只想提供libs而不想透露出各項實作的方式時,可以使用。

A2-4 : The family of related objs is intended to be used toether, and this constraint needs to be enforced.(這還真不會翻譯)

J2EE當中有使用上跟Abstract Factory Pattern有關的是Data Access Object / Transfer Object Assembler。J2SE當中則是java.awt.Toolkit

沒有留言: