深刻理解代理模式在java中如何最佳化系統效能

來源:互聯網
上載者:User

標籤:代理   模式   系統   速度   java   

最近參與實習公司的項目迭代,項目中需要實現系統的快速響應和大量資料處理。在不斷的學習中獲得一點兒心得,先記錄下來。慢慢的修改!
關於代理模式的知識和簡單應用之前的學習筆記中已經有記錄了,可以複習一下。這裡主要記錄如何使用代理模式來實現消極式載入,進而提升系統系能和反應速度。

使用代理模式實現消極式載入的一個簡單一實例:
需求:項目中對系統的啟動速度做了一定的要求

我們在系統首次載入時,因為不需要實際的資料來構造顯示介面,這就為我們實現系統首次載入的快速響應提供了可能。在常規模式下,我們一般會在系統啟動時就開始初始化所有的類,如果這時系統中很多類設計到獲得資料庫連接(比如初始化串連池)或者是類似的操作(比如XML解析),所有這些操作疊加在一起,就會拖慢系統的啟動速度。這時我們可以考慮使用代理模式,使用代理類,封裝一些初始化操作(比如資料庫連接池的構建),以資料庫為例:使用代理類封裝對資料庫查詢中的初始化操作,當系統啟動時,初始化這個代理類,而非真是的資料庫查詢類。而代理類什麼都沒有做,這樣構造的速度就獲得了提升。
記住這一原則:將消耗資源最多的方法都使用代理模式分離出來(如果可以的話);等到使用者真正在使用的時候在由代理類單獨去載入真實類,完成使用者的請求,因為不是所有的真實類都可能被使用者使用到。
消極式載入的核心思想:如果當前並沒有使用這個組件,則不需要真正地初始化它,使用一個代理對象代替他的原有位置,直到真正需要使用的時候才對他進行載入。
代理模式的實現:

public class RealSubject implements Subject{    public RealSubject(){        try{            Thread.sleep(1000);  // 類比系統啟動時的時耗        }catch(Exception e){            e.printStackTrace();        }    }    public void doSomething(){        // ...    }}// 代理類是輕量級的對象,建立很快public calss SubjectProxy implements Subject{    private RealSubject real = null;    public void doSomething(){        // 在真正使用組件的時候,才建立真實的對象        if(real == null)              real = new Sunbject();        return real.doSomething();    }}

深刻理解代理模式在java中如何最佳化系統效能

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.