0
我想創建不公開任何底層實現的類。甚至沒有一個指向實現的指針。
我會用全局對象池做到這一點。
就是這樣。
一個類TestImpl類中實現的測試。
當構造Test時,它會在全局對象池中爲自己創建一個TestImpl。
對象池基本上是每種類型的地圖。關鍵將是Test實例的內存地址,並且該值將是相應的TestImpl。所以每次調用Test的成員函數時,它都會首先從對象池中獲取相應的TestImpl,並使用該指針作爲關鍵字。
這種對象池當然必須是同步的,需要鎖。
您認爲這樣的解決方案會產生多大的性能?
表現爲* *什麼?您已經清楚地表明您可能會在「對象池」上發生鎖定爭用。如你在這裏所描述的那樣執行,並假設一個相當豐富的多線程環境(你沒有在你的文章中指定),它看起來像是一種高概率機制,它可以壓制任何並行的希望。所以編碼並找出答案。 – WhozCraig 2014-10-01 10:33:26
如果您想完全隱藏實現,那麼您只能在頭文件中提供純虛擬接口並提供工廠來檢索實現。 – Galik 2014-10-01 10:43:41
性能影響取決於調用次數與每次調用所花費的時間(如往常一樣),以及池的大小和實現。 – 2014-10-01 10:46:24