我有幾個隊列都延伸Queue
類。我想做一個隊列管理器基類來處理添加到隊列(和其他操作)。如何解決抽象靜態方法設計問題?
如果你看看下面的代碼,我創建了一個名爲QueueManger
的基類,它有一個名爲add()
的靜態方法,它將得到'隊列'並向其中添加一個變量。我想讓getQueue()
(在add()中調用)抽象,因爲我想強制其他類提供它們自己的'Queue'實現。問題是我無法聲明抽象的靜態方法。什麼是解決這個問題的正確方法?
public class RegistrationQueueManger {
@Override
Queue getQueue() {
return new RegistrationQueue(); // RegistrationQueue is a class that
// extends Queue.java
}
}
public abstract class QueueManger {
abstract static Queue getQueue(); // Error: cant do! (in java)
public static Add(String myvar) {
getQueue().add(myvar);
}
}
注:我看到了有關這個問題的一些問題,但它並沒有真正給出如何解決它,並創建另一個設計處理它一個很好的答案。
閱讀下面的答案,而如果他想延長的QueueManager使用Singleton模式,而不是你的代碼 – 2012-01-12 17:03:17
的,它不應該是靜態的還是單身。 – Robin 2012-01-12 17:34:28
對,使RegistrationQueueManger成爲一個單身人士呢?是對的嗎。 – Jimmy 2012-01-12 22:00:51