keep moving!

          We must not cease from exploration. And the end of all our exploring will be to arrive where we began and to know the place for the first time.
          隨筆 - 37, 文章 - 2, 評論 - 3, 引用 - 0
          數據加載中……

          Design Pattern: Future 模式

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

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

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

          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;
           }


          張金鵬 2007-04-17 10:57 發表評論

          文章來源:http://www.aygfsteel.com/jesson2005/articles/111199.html

          posted on 2008-09-07 11:06 大石頭 閱讀(162) 評論(0)  編輯  收藏 所屬分類: 多線程

          主站蜘蛛池模板: 宜州市| 高碑店市| 西藏| 搜索| 睢宁县| 建昌县| 镇巴县| 青州市| 洛南县| 青冈县| 高安市| 高密市| 马山县| 城口县| 姚安县| 同心县| 聂荣县| 宾阳县| 宜春市| 肃北| 哈密市| 江北区| 甘洛县| 江陵县| 漳州市| 吐鲁番市| 滁州市| 西青区| 铜鼓县| 泾阳县| 牡丹江市| 泾源县| 来宾市| 阿图什市| 嘉鱼县| 甘泉县| 崇文区| 深州市| 余姚市| 通河县| 海门市|