Re: [問題] 繼承架構設計問題..
※ 引述《xamous (一天死去一點)》之銘言:
: 現在遇到兩個問題:
: 1)
: 希望在 DerivedManager 的實做中用 vector 來管理元素,因為:
: 1. vector 管理方便。
: 2. 我希望在 DerivedManager 內保留的是 item 的 "副本",vector
: 會將元素拷貝一份的行為剛好符合所需。
: 但是因為 Base 只是 abstract class,所以無法產生 vector<Base>。
如果你希望在 vector< Base > 中保持多型特性
可以改用
vector< tr1::shared_ptr< Base > >
裡面放的是指標
不知道 shared_ptr 是什麼的話可以去找一下資料
另外,你需要的是多型複製
以目前你的設計會造成大量的 slice
在 Base 裡多定義一個函式:
virtual Base * clone() const = 0;
並可以用另外的手法強迫 Derived classes 一定要實作它
: 2)
: client 在使用上也會遇到問題,因為 Base 是 abstract,所以
: API_RetrieveItmes 的設計者只看到 interface 的話,也無法產生 Base
: 物件來作為 addItem 的參數。
: 想請問一下像這樣的架構有什麼問題呢?有沒有更好的架構可以使用?
: 學藝不精請多指教 m(_ _)m
你可能需要一個 Object Factory
Loki 的 Factory 值得參考
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.104.235
※ 編輯: legnaleurc 來自: 140.123.104.235 (04/14 10:33)
推
04/17 06:08, , 1F
04/17 06:08, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):