Re: [問題] 抽像工廠與工廠方法
※ 引述《rosemary0401 (rosemary0401)》之銘言:
: 小妹最近再看Design pattern的相關知識,
: 但卻不太清楚,用了這些pattern會有什麼好處,反而覺得更加得複雜了。
: 故想跟各位前輩請教,
: Abstract Factory實際上就是多個Factory Method是嗎?
: 能不能舉個例子,如果沒有Abstract Factory或是沒有Factory Method會帶來什麼不便?
: 謝謝
雖然他們都有「工廠」兩個字,不過目的卻不太一樣:
┌──┬─────────┬──────────┐
│名稱│工廠方法 │抽象工廠 │
├──┼─────────┼──────────┤
│目的│規定物件的製程。也│為了產出不同組合的物│
│ │就是在使用物件前依│件,有點像速食店套餐│
│ │序呼叫不同的成員函│的概念。 │
│ │式完成準備的工作。│ │
└──┴─────────┴──────────┘
可以說工廠方法著重在產品的多型,抽象工廠著重在工廠的多型。
與其說會造成什麼不便,先來講講為什麼 Design Patterns要莫名
多一堆介面好了:
1.操作統一
因為規定了子類別一定要實現的操作,所以使用上可以一視同仁
嗯..就是這麼簡單, 而且因為多型的支援, 你可以任意增加不同的
類別完成新功能,而無須改動太多原本的程式碼。
─────────────────────────────
使用設計模式就好像在烹調各式各樣的菜餚,你可以跟人家說你煮
的是「步步高升」,而不用講「一湯匙米酒+兩湯匙冰糖+三湯匙
..」。
設計模式就是食譜,大概說明了每道菜的材料以及作法,直接拿來
套用總比你想到什麼就加什麼來得保險;不過像四川菜泰國菜還是
要依照家人口味調整香料的比例。而且「六菜碗」也不適合在新年
的時候準備。
有互動的類別形成一個模組,他們以介面為協定來溝通,所以仔細
了解介面存在的原因,妳要改良成家常菜也不是多麼困難的事情!
雖然例子網路上找得到很多,還是要透過實作以及遇到需求變更才
能體會它為我們帶來「不用修改太多程式」的便利性,現階段Head
First Design Patterns、GoF 的 Design Patterns 花時間讀過一
便有個概念就好,覺得可能需要用到再回來翻一下,真正有收穫的
應該是 ─ 解決問題的時候。
─────────────────────────────
找個簡單又剛好是 C++的例子真不容易,我看過最好懂的應該是
Head First Design Patterns上的範例了,剛剛轉譯程式碼轉到快
瘋掉,只好放棄...
有興趣可以參考它上面的第四章,以及範例程式(java)
網路版: http://ppt.cc/YrW4
程式碼: http://ppt.cc/zY!i
--
◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█ T-ara版怎麼去
████◤ ██ ◢██◣█ ██ ████ ██ s ~> T-ara
█/███ ██ ██ ██ █/█ ◢███ █/█ 歡迎您的光臨
████◤ ██ ██ ██ ██◤ ███◤ ██◤ 恩靜、智妍、孝敏
█/███ ██ █/██◤ ██ █/██ ██ 素妍、居麗、寶藍
████◤ █◤ ◥██◤ █◤ ████◤█◤ ψmakigoto123
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
推
11/28 03:36, , 1F
11/28 03:36, 1F
推
11/28 10:26, , 2F
11/28 10:26, 2F
推
11/28 11:11, , 3F
11/28 11:11, 3F
→
11/28 12:44, , 4F
11/28 12:44, 4F
推
11/28 13:46, , 5F
11/28 13:46, 5F
晚點補上@_@
推
11/28 14:48, , 6F
11/28 14:48, 6F
推
11/28 16:47, , 7F
11/28 16:47, 7F
推
11/28 16:48, , 8F
11/28 16:48, 8F
推
11/28 20:51, , 9F
11/28 20:51, 9F
推
11/29 01:20, , 10F
11/29 01:20, 10F
→
11/29 01:20, , 11F
11/29 01:20, 11F
→
11/29 01:23, , 12F
11/29 01:23, 12F
那為了避免爭議放品質比較好的2004好了 XD 電子書倒是2008
偏多, 內容也沒什麼差別.
※ 編輯: loveme00835 來自: 140.121.197.115 (11/29 02:22)
→
11/29 02:39, , 13F
11/29 02:39, 13F
討論串 (同標題文章)