這次來記錄工廠模式(Factory Pattern),書上的定義是:定義一個建立物件的介面,但由次類別決定要實體化的類別為何。工廠模式讓類別把實體化的動作,交由次類別運行。
以我的例子為例,餃子店要賣餃子(Dumpling),目前有普通餃子與辣味餃子,首先我建立抽象類別Dumpling,並在裡面設置兩個abstract function,mix與shape,這裡個方法是要完成餃子的類別的必要程序,但是如普通餃子跟辣味餃子雖然都 有這兩樣程序,但是內部作法不太一樣,所以才會將mix和shape定義為abstract,由子類別來實作。
基本上上面就已經符合書本上字面上的定義了
接下來定義餃子店(DumplingStore)的抽象類別,假設有南北兩店,在DumplingStore中定義一abstract functon,createDumpling(String type),由這方法來決定要產生什麼餃子,而在其中我又用Decorator Pattern來裝飾我所生產的餃子,南北物價不同,北部比一般價多0.5元,而南部則是一般價,南北兩店都繼承DumplingStore,並覆寫createDumpling(String type),最後南北兩店所產生的餃子價格就會不一樣。
UML類別圖:
執行結果:
Github:點我