2010-07-26 26 views
1

我即將添加一個將由我之前設計的三個類(A,B和C)使用的類X.在設計C++中使用的幾個類時,我應該使用API​​/ABC嗎?

新的類X將包含新功能的數據和函數,併爲使用它隱藏較低層的類提供服務。問題是,A,B和C將使用類X的方式完全不同,即使用它的不同功能。

我的問題是如果我應該爲新的類X提供一個API(或C++的抽象基類)。如果我應該這樣做,那麼這個API應該是X類還是A類,B類和C類?我曾經在某處讀過一個API,它有時與那個實現它的類更接近。如果我確實爲每個調用者提供了一個API,那麼API將只包含特定調用者需要的函數。

或者我應該創建一個普通的C++類,並讓調用者在A,B和C的每一箇中使用X的公共函數的子集,儘管他們「技術上」可以使用它們全部?類X的功能不太可能改變,也不需要創建與X類似的類。

如果我沒有完全迷失在面向對象的編程中,那麼爲類提供接口/ API的一個原因是因爲調用者使用接口名稱並使用動態綁定來解析正確的子類類型,因此使用接口/ API的代碼不需要更改,因爲如果您添加另一個子類。

最好的問候,請讓我知道如果有什麼不清楚,我會盡可能快地回答。

感謝,

托馬斯

回答

0

如果情況不太可能改變,那麼可能不值得花費額外的努力。

如果您決定,問題是新的類是否會實現全部或部分功能。例如,它們是否共享後端存儲,因此所有需要立即更新(在這種情況下沒有分裂點),還是它們涉及完全獨立的問題,在這種情況下,分裂(如@GarethOwen所建議的)是可能是要走的路。

相關問題