作者adrianshum (Alien)
看板C_and_CPP
標題Re: [問題] factory pattern
時間Sat Nov 19 11:38:45 2011
雖然都那麼多人回了,不過我還是多咀一下。
首先,如果大家有去看一看 GoF Design Pattern,
便會發覺,根本沒有一個 pattern 叫 "factory pattern".
因為單是 "factory" 根本還未算一個 pattern.
所謂 factory 只是把生產的動作交給一個所謂工廠
的個體。只要符合這樣就算是 factory 了。但要工廠
的原因可以千奇百怪,單是因為生成某件東西很麻煩
所以把生成的動作包成工廠已經是一個合適的原因。
在談 Design Pattern 的時候,我總是說最重要的是
一樣事:解決的問題。我們要解決的問題種類何止千
萬,DP 是把歸納了其中一些。大家洋洋灑灑談了
那麼多篇,為什麼沒有人去討論 (最大問題的是,
原問者也沒說)究竟現在是想解決什麼問題。
原問者只是寫了一小段有點像 abstract factory
但還是風馬牛不相及的 code, 究竟OP 你是想問哪一
個 factory pattern 或想解決什麼問題? 你是想
生成 *一系列* 的產品但想可以替換它們的實作
(Abstract Factory)? 還是想把個別東西的生成
加以控制讓使用者不知道你生成的實際class 或方法
是什麼 (Factory Method)?還是因為生成的過程太
複雜要換觸的人太多,所以把生成的動作分出來
(是 factory 但不是 GoF 提到的 patterns, 比
較接近 Facade)。
在不知道現在想解決的是什麼問題(或者想討論
的是解決哪一問題的 pattern),我覺得討論那麼多也
是枉然。
建議OP 去找本 Head First Design Pattern,去
理解一下一些最常見的 GoF Design Pattern,你看
過之後我想你的問題會問得比較有建設性,而不是像
現在,丟一個名詞出來 (factory pattern),甚至
還不是一個 pattern,然後讓自己和大家亂猜可以
做什麼。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 183.179.61.91
推 tyc5116:好的,我會再想想 11/19 16:27
→ cgcheng:其實你用obj當base也不是不行,只是能共同抽出來的是? 11/19 16:59
推 tyc5116:我原先想法是想以一貫的指令呼叫各種不同的元件 11/19 18:58
→ tyc5116:焦點倒不是在為了抽出他們的共同點.... 11/19 18:59
推 mingtai1:抽出共同點你才可以用"一貫"的指令 透過繼承+多型去完成 11/19 19:22
→ mingtai1:例如Object有一個SetAttr,Button,Text都繼承它,你就可以 11/19 19:24
→ mingtai1:用多型特性,只用Object指標去操作Button/Text的SetAttr() 11/19 19:25
→ mingtai1:此例就是把SetAttr這個共通屬性做一般化,抽到Object裡面 11/19 19:27
→ james732:不要再執著硬套design pattern了,這是入魔的前兆 11/20 02:27
推 sunneo:還是在解決問題的本質 可以快速解決並簡化問題就不用執著DP 11/20 17:13