目前我有一個使用隊列事件的方法。基於類型我調用適當的方法來處理它。強制使用隊列的模式
private void consumeQueue() {
MyQueue myQueue = MyQueue.getInstance();
Iterator mIterator = myQueue.iterator();
while (mIterator.hasNext()) {
Object mEvent = null;
try {
mEvent = mIterator.next();
mIterator.remove();
} catch (NoSuchElementException e) {
return;
}
if (mEvent instanceof EventOne)
handleOne((EventOne) mEvent);
else if (mEvent instanceof EventTwo)
handleTwo((EventTwo) mEvent);
...
}
}
讓我們假設開發者在其他地方排隊一個新類型的事件,我們稱之爲EventThree。這樣做,我不能確定開發人員將正確處理EventThree的消費。
是否有任何模式,所以我可以強制(在編譯時)開發人員來處理EventThree的消耗?
更好的方法是強制每個「事件」具有「句柄」方法。 – qqilihq
簡單多態(mEvent.handle()')或訪問者模式(https://en.wikipedia.org/wiki/Visitor_pattern) –
這意味着我需要強制開發者擴展事件基類,它正在實現與handle()裏面的接口?但那麼,我該如何強制他延長賽事? – MoreOver