我有一個簡單的(可能很常見的)設計問題。比方說,我有一個看起來像這樣的接口:Java - 界面設計
public interface AnalysisResult {
BigDecimal getMeasure();
}
然而,這由幾個不同的具體實現在後面實現 - 一些包括平均場以及各種性質的一些含計數等。現在,我給定一組AnalysisResult
,我希望能夠根據類型輸出結果,即平均結果將說明什麼是平均值的措施之上等。一種方法來做到這一點將暴露在方法上的界面說outputResult()
,但問題是我可能想輸出的HTML格式,CSV和許多其他結果,所以我會需要每個方法。此外,可能會出現這種情況,我希望根據類型輸出某些內容,例如:'這是平均結果'...您會說在這種情況下,簡單地使用instanceof
並執行輸出端?
訪客模式也是我想到的。我不想測量混合輸出邏輯 – Bober02
@ Bober02有趣的鏈接問題最好的答案不是選擇的問題,而是最有價值的答案,它是C++,但可以很容易地在Java中進行轉換。我會這樣做,你不想專門化返回的對象。像往常一樣,它取決於你將擁有多少格式以及多久添加/更改它們。 – BigMike
我還記得另一個問題:我想讓Outputter類獲取分析結果列表,並可能根據類型輸出一些元信息,例如列名稱。那麼,主要的要求是,集合只能包含一種特定類型的對象,如果你只是一個訪問者模式,我認爲這是不可能實現的,因爲它只接受基於父接口的對象 – Bober02