Factory Method Pattern(工廠方法模式),與Abstract Factory Pattern抽象工廠,其實都是在做同一件事,
就是要把建構子(constructor )封裝起來,使人不能隨意的去使用、修改。 這個與Singleton其實都是在做相同的事情,
因此,這三個也很常被使用在一起。 或是任兩個合併使用。
最簡單的區分方法:我先列個簡單的小表 (但我其實覺得這個分法很不好…有興趣的人真的去抓一下兩邊的UML圖去看一下比較好
Factory Method | Abstract Factory | ||
以class來達成loose coupling的目的 | 以object來達成loose coupling的目的 | ||
主要精神:inheritance(繼承) | 主要精神:composition(合成) | ||
當利用Factory Method來建立物件時,需要繼承一個 class,並且override掉原本的Factory Method | 利用Abstract Factory的時候:重點是需要先定義一個 concrete Factory(具象化的工廠) | ||
目的:只是讓使用者不再需要每次修改原始的class | 可以將各種產品利用composition集合起來 | ||
缺點:每一次要加入新產品:都必需要改變interface,甚至 需要將所有的工廠重新實作一次以適應新的interface | |||
建立一項商品: | 建立一整個商品家族 | ||
在java中Factory會看到的字:abstract | 在java中factory會看到的字:interface |