設計模式之Proxy–靜態代理(代理模式)

來源:互聯網
上載者:User
代理模式一遍涉及的角色有1.抽象角色:聲明真實對象和代理對象的共同介面2.代理角色:代理對象角色內部含有對真實對象的引用,從而可以操作真實對象,同時代理對象提供與真實對象相同的介面以便在任何時候都能夠代替真實對象。同時代理對象可以在執行真實對象操作時,附加其他動作,想當於對真實對象進行封裝。3.真實角色:代理角色所代表的真實對象,是我們最終要引用的對象。4.客戶需要調用的是RealSubject中的request方法,現在使用ProxySubject來代理Realsubject類,同樣達到了目的,同時還封裝了其他方法(preRequest,afterRequest),可以處理一些其他問題。5.另外,如果要按照上述方法使用代理模式,那麼真實的角色必須是已經存在了的,並將其作為代理對象的內部屬性。但是實際使用的時候i,一個真實角色必須對應一個代理角色,如果大量使用會導致類得極具膨脹;此外如果事先並不知道真實角色,那麼該如何使用代理?這個問題可以通過Java的動態代理類來解決。
/** * Proxy.java * proxy * * Function: TODO * *   ver     date      author * ────────────────────────────────── *    2011-6-8 Leon * * Copyright (c) 2011, TNT All Rights Reserved.*/ package proxy;/** * ClassName:Proxy * Function: TODO ADD FUNCTION * Reason: TODO ADD REASON * * @author   Leon * @version * @since    Ver 1.1 * @Date 2011-6-8 */ abstract class Subject {public abstract void request() ;} class RealSubject extends Subject{@Overridepublic void request() { // TODO Auto-generated method stubSystem.out.println("This is my real Request..."); }}public class Proxy extends Subject { /** Proxy中會包含對RealSubject的引用**/private RealSubject realSubject ;@Overridepublic void request() { // TODO Auto-generated method stub//調用真實之前(optional)this.preRequest();if(realSubject==null){//調用真實角色realSubject = new RealSubject();}realSubject.request();//調用真實之後(optional)this.afterRequest();}private void preRequest(){System.out.println("before real request.....");}private void afterRequest(){System.out.println("after the real  request......");}public static void main(String...  args){Subject subject =  new Proxy();subject.request();} }

聯繫我們

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