2013-06-12 27 views
3

我在我的項目中有一個用於加載外部資源(即圖像和音頻文件)的類。這個類只有少數幾個成員:用於存儲資源的HashMap字段,以及用於檢索資源的方法,例如getImage(reference)等。聲明類抽象是否糟糕,因爲它只有靜態成員?

我最初實施singleton pattern,但後來我讀了一些關於鏈接頁面的批評,並考慮使用靜態成員。

很高興地決定靜態實現所有類的功能後,我正在做一些代碼清理。在做這件事的時候,我意識到沒有任何東西阻止我實例化這個類ResourceManager。這使我用abstract關鍵字標記它。

我從來沒有用過這種方式使用過abstract;我只是將它更傳統地應用於繼承樹。我試着用搜索引擎的使用和誤用abstract,但我找到了資源,似乎無論是低於守信,或沒有建議不要以這種方式使用的抽象:

Oracle's tutorial on abstract classes and methods.
Another site discussing the keyword.

報價從第二個環節:「其目的是純粹作爲階級的父母。」

我的新實現是傳統的,可原諒的還是純粹的錯誤?

+3

製作一個類抽象意味着我想要的東西,但我明白了爲什麼你首先考慮了它。抽象類不應該被實例化,因爲它缺少具體的實現細節,因爲它具有抽象的方法。你會更好地隱藏我認爲的構造函數。 –

回答

8

你不必讓它抽象,只是讓構造私人摘要告訴開發者這個類是用於擴展的,在你的例子中不是這種情況。

private ResourceManager() { 
} 
+0

啊,我怎麼沒有想到這樣做? +1用於重複抽象的自我記錄屬性。 – sleeparrow

3

如果我是你,我只希望隱藏這樣的構造:

private ResourceManager() {} 
1

它是設計不良聲明一個類抽象的,因爲它只有靜態成員?

是的。

將其作爲最終版本,並僅爲其提供私有構造函數。

相關問題