不確定如何描述這個肯定,但我想我已經搞清楚了我想在標題中做什麼。詳細說明一下,我正在尋找一種設計模式,它可以讓我實現一種服務,在一種情況下可以同步返回調用的結果,但在另一種情況下,會返回有關如何異步完成調用的詳細信息(例如作業ID)。設計一個服務接口,以允許同步和異步實現
也許只是通過定義這樣的問題,很明顯,我試圖做的事情打破了設計接口契約的想法。完全可能朝着錯誤的方向前進。
我在想的是可能是這樣的:
public class Data {
private int id;
/* getter/setter */
}
public class QueuedData extends Data {
private int jobId;
/* getter/setter */
}
public interface MyService {
public Data fetchData(int id);
}
public class SyncedMyService implements MyService {
private SyncDao syncDao;
public Data fetchData(int id) {
return syncDao.getData(id);
}
}
public class QueuedMyService implements MyService {
private JobQueue queue;
public QueuedData fetchData(int id) {
int jobId = queue.startGetData(id);
QueuedData queuedData = createQueuedDate(jobId);
return queuedData;
}
}
這是一個明智的方式去了解這項任務?感謝您的任何建議。 (這可能是我應該閱讀的設計模式書)
整潔,沒有聽說過那個包,我得看看它。我不確定它在我的場景中會有用,因爲我可能會使用Quartz進行「背景」任務。 – 2010-09-29 18:37:22