Re: [問題] factory pattern

看板C_and_CPP作者 (Alien)時間14年前 (2011/11/19 11:38), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串7/7 (看更多)
雖然都那麼多人回了,不過我還是多咀一下。 首先,如果大家有去看一看 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

11/19 16:27, , 1F
好的,我會再想想
11/19 16:27, 1F

11/19 16:59, , 2F
其實你用obj當base也不是不行,只是能共同抽出來的是?
11/19 16:59, 2F

11/19 18:58, , 3F
我原先想法是想以一貫的指令呼叫各種不同的元件
11/19 18:58, 3F

11/19 18:59, , 4F
焦點倒不是在為了抽出他們的共同點....
11/19 18:59, 4F

11/19 19:22, , 5F
抽出共同點你才可以用"一貫"的指令 透過繼承+多型去完成
11/19 19:22, 5F

11/19 19:24, , 6F
例如Object有一個SetAttr,Button,Text都繼承它,你就可以
11/19 19:24, 6F

11/19 19:25, , 7F
用多型特性,只用Object指標去操作Button/Text的SetAttr()
11/19 19:25, 7F

11/19 19:27, , 8F
此例就是把SetAttr這個共通屬性做一般化,抽到Object裡面
11/19 19:27, 8F

11/20 02:27, , 9F
不要再執著硬套design pattern了,這是入魔的前兆
11/20 02:27, 9F

11/20 17:13, , 10F
還是在解決問題的本質 可以快速解決並簡化問題就不用執著DP
11/20 17:13, 10F
文章代碼(AID): #1EnoJ7Mk (C_and_CPP)
文章代碼(AID): #1EnoJ7Mk (C_and_CPP)