设计模式之Future模式——提交任务后立即得到一个Future对象,后面利用该对象得到具体的执行结果。加上回调功能,任务执行结束通知调用者或直接回调相应方法
1. Future模式的實現邏輯
1.1 在具體實現之前,我們先將Future模式的實現邏輯和流程理清楚,然后編寫代碼。
1.2 以甜品店買奶茶為例。第一步:得先有服務員;第二步:我們提交一個奶茶訂單,會得到一張票據,由于制作奶茶花費時間較長,此時我們可以去買串串或者逛逛商場;第三步:服務員制作奶茶。
1.3 最后,我們回到甜品店,根據票據得到我們的奶茶。或者服務員沒做好我們稍等一會。
1.4 從上面的分析可得,最主要的幾個因素是:服務員、奶茶訂單、票據。
?
2. Future模式的具體實現
2.1 甜品店不僅僅一種奶茶票據,還有蛋糕、點心的票據。所有的票據都屬于一種憑證,所以這邊抽象一個Future接口,用來表示憑證。
2.2 奶茶票據對應著Future接口的具體實現類FutureImpl
2.3 甜品店不僅僅處理奶茶訂單,還有蛋糕、點心訂單。所有訂單對于甜品店屬于一種任務,這邊抽象一個Task接口。
2.4 最終需要一個服務員,負責處理訂單和接待客人,這邊對應著TaskService類。
2.5 測試及運行結果
?
3. 包含回調功能的Future模式
3.1 在TaskService類中重載一個submit方法,傳入參數需要一個任務Task實現類對象,一個消費者Consumer接口對象。
3.2 在提交任務時,通過lambda表達式傳入一個Consumer接口實現類對象并重寫accept方法。
?
總結
以上是生活随笔為你收集整理的设计模式之Future模式——提交任务后立即得到一个Future对象,后面利用该对象得到具体的执行结果。加上回调功能,任务执行结束通知调用者或直接回调相应方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Executors框架——5种常用的线程
- 下一篇: Future和CompletableFu