我有一個抽象類'TopHandler'。有兩個類擴展了TopHandler:'UserHandler'和'MerchantHandler'。Java抽象類 - 我該如何最好地解決這個問題?
我有一個方法sendMessage(),我不確定在哪裏放置。一種選擇是將其放在TopHandler並創建要麼UserHandler或MerchantHandler的對象,像這樣:
public abstract class TopHandler {
//Other methods...
public void sendMessage() {
TopHandler handler;
if (message.equalsIgnoreCase("User")) {
handler = new UserHandler();
//Call UserHandler implementation of abstract methods
} else {
handler = new MerchantHandler();
//Call MerchantHandler implementation of abstract methods
}
}
}
我的另一種選擇是讓的sendMessage()抽象的,有兩類實現它,但是這確實創造了一些重複/非常類似的代碼。
IMO你的結構足夠好...也許你想檢查[FactoryPattern](http://www.tutorialspoint.com/design_pattern/factory_pattern.htm) –
取決於兩個子類是否都需要它,以及它是如何需要。它是靜態的嗎?取決於實例?取決於類型? – Stultuske
我發現奇怪的是'TopHandler#sendMessage()'不是靜態的,而是用於實例化一個'TopHandler'。但我沒有完整的代碼視圖。無論如何,另一種解決方案可能是有一個抽象的'TopHandler#createHandler()'方法,它將爲每個子類返回正確的處理程序 – jhamon