看板 C_and_CPP 關於我們 聯絡資訊
最近在看,覺得還滿不錯的,只是看了不少種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
shadow0326:目前為止實務上自己有用到 唯一覺得這樣有意義的地方是 11/04 11:23
shadow0326:其他要使用此物件的人只要include 抽象的介面部分就好 11/04 11:23
shadow0326:比如實體部份內可能又有include 物件A,B,C,D 如果不把 11/04 11:24
shadow0326:介面拉出來 就變成每個用到它的都要include A,B,C,D... 11/04 11:24
anotherday:當程式需要重構或者擴充時 這些就會用得上了 11/04 11:32
diabloevagto:在之後增加更多繼承的時候就可以用到多型 11/04 12:43
diabloevagto:另外在dp中滿多時後會用到指標的,這時候多型就有用 11/04 12:46
diabloevagto:原po的那個編譯不會過,要在Aggregate的func後面加上 11/04 13:08
diabloevagto:=0 11/04 13:08
tyc5116:上面我是隨手寫的..不過為什麼要加=0?? 11/04 13:23
james732:pure virtual. 如果不加 = 0 就要寫 function 內容 11/04 13:25
tyc5116:恩...謝謝回答!! 11/04 13:29
adrianshum:不如你說說有哪一個 Pattern 有 "不用硬是分開"的情況? 11/04 15:11
aleelyle:你先了解什麼是Abstract classes你就知道為什麼要用它了 11/04 15:28
tyc5116:ad大你這樣問我也不知道該怎麼回答耶XDD只是有點這種感覺 11/04 15:47
tyc5116:但又沒辦法明確說是哪一個 11/04 15:47