<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 代理設計模式示例 > 原文: [https://javatutorial.net/java-proxy-design-pattern-example](https://javatutorial.net/java-proxy-design-pattern-example) 本文介紹了 Java 中的代理設計模式。 代理設計模式是“四人幫”設計模式中的基本計劃設計。 輔助結構設計管理如何確認對象之間的連接以改進計劃。 ## 代理設計模式如何工作? 代理模式為另一個對象提供代理或占位符,以控制對其的訪問。 在計算機編程中,代理設計是產品配置設計。 代理在其最廣泛的結構中是充當與其他事物的接口的類。 代理可以連接任何東西:系統關聯,內存中的巨大對象,記錄或其他昂貴或難以復制的資產。 簡而言之,代理是客戶調用的包裝器或運算符對象,以在后臺訪問真正的服務對象。 中介的使用基本上可以發送給正品,也可以提供更多的理由。 在代理中,可以授予其他用戶的權限,例如,保留對正品項目的活動嚴重影響資產的時間,或者在對正品對象的任務被構想之前檢查前提條件。 對于客戶而言,代理對象的使用就像利用正品一樣,因為兩者都實現了相似的接口。 ![Proxy pattern illustration](https://img.kancloud.cn/86/ea/86ea8555524a3c846413aa5f89b4582d_975x470.jpg) 代理模式圖 ## 現實場景中代理設計模式的實現 我們可以創建一個`Image`接口,并執行`Image`接口的實體類。 `ProxyImage`是一個代理類,用于減少`RealImage`對象棧的內存印象。 ![Proxy pattern diagram for Java example](https://img.kancloud.cn/b3/f4/b3f43b5e0eaeff365f0ee5948849b5a9_933x402.jpg) Java 示例的代理模式圖 ## Java 中的代理設計模式示例 創建一個接口 `Image.java` ```java public interface Image { void display(); } ``` 創建實現相同接口的具體類。 `RealImage.java` ```java public class RealImage implements Image { private String fileName; public RealImage(String fileName){ this.fileName = fileName; loadFromDisk(fileName); } @Override public void display() { System.out.println("Displaying " + fileName); } private void loadFromDisk(String fileName){ System.out.println("Loading " + fileName); } } ``` `ProxyImage.java` ```java public class ProxyImage implements Image{ private RealImage realImage; private String fileName; public ProxyImage(String fileName){ this.fileName = fileName; } @Override public void display() { if(realImage == null){ realImage = new RealImage(fileName); } realImage.display(); } } ``` 必要時,使用`ProxyImage`獲取`RealImage`類的對象。 `ProxyPatternDemo.java` ```java public class ProxyPatternDemo { public static void main(String[] args) { Image image = new ProxyImage("test_10mb.jpg"); //image will be loaded from disk image.display(); System.out.println(); //image will not be loaded from disk image.display(); } } ``` 驗證輸出。 ```java Loading test_10mb.jpg Displaying test_10mb.jpg Displaying test_10mb.jpg ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看