我在我的基本抽象類和靜態getters/setters中使用靜態成員變量。這裏是我的階級結構:在抽象類中使用靜態變量
public abstract class Parent{
private static XmlService xmlService;
//getters and setters for xmlService
}
這xmlService在子類用於XML轉換等等。然而,在運行時根據使用其他服務的數據創建的子類的實例。現在我想用junit進行測試,並且需要模擬xmlService。如果我不使它成爲靜態的,我沒有看到用mock初始化xmlService的任何方法。
所以我的問題是,這種方法(靜態+抽象)是好的,或者它打破了任何OOP概念等。我沒有看到這個問題,但只是想要一個意見。
感謝
編輯:我想根據意見,我會檢討我的設計,最有可能將與構造器注入的方式去
可能是一個錯字,但這是一個無效的聲明語句。可能缺少變量的類型。 –
你是否需要它是靜態的,或者只是爲了方便測試而使它變爲靜態的?如果除了測試之外,你不需要它是靜態的,那麼把它變成靜態的幾乎肯定是錯誤的。通常最好通過構造函數傳遞依賴關係。 –
及其唯一的測試,這似乎對我來說可疑 – csn