[問題] 請問Design pattern

看板C_and_CPP作者 (累人啊....)時間14年前 (2011/11/04 11:19), 編輯推噓2(2014)
留言16則, 7人參與, 最新討論串1/1
最近在看,覺得還滿不錯的,只是看了不少種pattern的模型後有個問題 大部份的pattern都有這種現象 一個抽象的class被一實體的class繼承 類似於 class Aggregate{ virtual void fun1(); virtual void fun2(); }; class ConcreteAggregate:public Aggregate{ void fun1(){...} void fun2(){...} }; 想問的是,不少模型都像這樣,只有一類別繼承,但卻是硬要分成抽象及實體 是因為這樣的習慣比較好,或是便於擴充,還是還有其它原因呢? 因為看久了有點覺得有些模型似乎不用這樣硬是分開.. 煩請說明一下,謝謝 p.s 我看的是秦小波寫的設計模式之禪,版上好像沒人推 是這本寫的內容不好嗎?反而深入淺出那本翻了一下不太合口味@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.174.137

11/04 11:23, , 1F
目前為止實務上自己有用到 唯一覺得這樣有意義的地方是
11/04 11:23, 1F

11/04 11:23, , 2F
其他要使用此物件的人只要include 抽象的介面部分就好
11/04 11:23, 2F

11/04 11:24, , 3F
比如實體部份內可能又有include 物件A,B,C,D 如果不把
11/04 11:24, 3F

11/04 11:24, , 4F
介面拉出來 就變成每個用到它的都要include A,B,C,D...
11/04 11:24, 4F

11/04 11:32, , 5F
當程式需要重構或者擴充時 這些就會用得上了
11/04 11:32, 5F

11/04 12:43, , 6F
在之後增加更多繼承的時候就可以用到多型
11/04 12:43, 6F

11/04 12:46, , 7F
另外在dp中滿多時後會用到指標的,這時候多型就有用
11/04 12:46, 7F

11/04 13:08, , 8F
原po的那個編譯不會過,要在Aggregate的func後面加上
11/04 13:08, 8F

11/04 13:08, , 9F
=0
11/04 13:08, 9F

11/04 13:23, , 10F
上面我是隨手寫的..不過為什麼要加=0??
11/04 13:23, 10F

11/04 13:25, , 11F
pure virtual. 如果不加 = 0 就要寫 function 內容
11/04 13:25, 11F

11/04 13:29, , 12F
恩...謝謝回答!!
11/04 13:29, 12F

11/04 15:11, , 13F
不如你說說有哪一個 Pattern 有 "不用硬是分開"的情況?
11/04 15:11, 13F

11/04 15:28, , 14F
你先了解什麼是Abstract classes你就知道為什麼要用它了
11/04 15:28, 14F

11/04 15:47, , 15F
ad大你這樣問我也不知道該怎麼回答耶XDD只是有點這種感覺
11/04 15:47, 15F

11/04 15:47, , 16F
但又沒辦法明確說是哪一個
11/04 15:47, 16F
文章代碼(AID): #1Eird6L0 (C_and_CPP)