我構建了一組對象來表示位於我的angularjs應用程序和後端API之間的數據抽象層。我爲此使用了coffeescript(一部分是爲了學習coffeescript,部分原因是我喜歡他們的類實現,因爲我最初來自Days of Yore的C++和java背景)。[java | coffee]腳本中的繼承類靜態覆蓋模式?
所以我有類似
Class Animal
@_cache: {}
...東西...
Class Dog extends Animal
@_cache: {}
等。這個問題(這顯然是一個語法糖的東西)是我想讓Dog的所有具體子類都有它們自己的緩存實例。我可以通過上面的方式處理它(只需重寫屬性),或者使用@_cache [@ constructor.name] = {}之類替換該緩存,並編寫緩存訪問器函數,而不是直接與之交互。
基本上,我想表達的模式是:「Property#{name}應該是此對象上的類級(或靜態)屬性,並且所有擴展類都應該有它自己的此屬性實例」,而無手動必須在每個子類型上執行該操作。有沒有合理的模式來做到這一點?
爲什麼他們需要自己的高速緩存?這些實例是否特別緩存?那麼值得明確地聲明自己的緩存。無論如何,我認爲你正在尋找AbstractFactory模式,或者一個簡單的「動物類」混合。 – Bergi
如果將它設爲靜態,那麼它將不會被繼承,它將屬於特定的類。那麼你爲什麼不簡單地做一個'Animal.cache = {}'?從那裏開始,你將不得不直接通過任何實例訪問'Animal'類中的緩存。如果是這種情況,你可以單獨定義一個緩存對象。 –