Design Pattern: Future 模式

來源:互聯網
上載者:User

http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=294&extra=page%3D1

Future模式可以簡單的看成是 Proxy 模式 與 Thread-Per-Message 模式的結合,在Proxy模式中,用一個Proxy來代替真正的目標(Subject)產生,目標的產生可能是費時的,例如在開啟一個內嵌圖片的檔案中,希望程式能儘快完成開啟檔案的動作,並顯示一個可接受的畫面給使用者看,在還不需要看到圖片的頁面中先使用Proxy代替真正的圖片載入,只有在真正需要看到圖片時,才由Proxy物件載入真正的圖片。

考慮這樣一個情況,使用者可能快速翻頁瀏覽檔案中,而圖片檔案很大,如此在瀏覽到有圖片的頁數時,就會導致圖片的載入,因而造成使用者瀏覽檔案時會有停頓的現象,所以我們希望在檔案開啟之後,仍有一個背景作業持續載入圖片,如此使用者在快速探索頁面時,所造成的停頓可以獲得改善。

Future模式在請求發生時,會先產生一個Future物件給發出請求的客戶,它的作用就像是Proxy物件,而同時間,真正的目標物件之產生,由一個新的執行緒持續進行(即Thread-Per-Message),真正的目標物件產生之後,將之設定至Future之中,而當用戶端真正需要目標物件時,目標物件也已經準備好,可以讓客戶提取使用。

一個簡單的Java程式片段示範可能像是這樣:
....
public Future request() {
    final Future future = new Future();

    new Thread() {
        public void run() {
            // 下面這個動作可能是耗時的
            RealSubject subject = new RealSubject();
            future.setRealSubject(subject);
        }
    }.start();

    return future;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.