日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java设计模式代理模式_Java中的代理设计模式

發布時間:2023/12/3 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java设计模式代理模式_Java中的代理设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java設計模式代理模式

代理對象或代理對象為另一個對象提供占位符,以控制對該對象的訪問。 代理充當原始對象的輕量級版本或簡化版本。 它支持與原始對象相同的操作,但可以將那些請求委托給原始對象以實現它們。

代理設計模式是一種結構模式,其中代理類包裝了實際的主題類。 客戶代碼僅與代理類交互,而不與真實主題交互。

在本教程中,我們將學習如何實現代理設計模式。

為什么要使用代理?

在三種最常見的情況下,我們可能需要代理類:

  • 虛擬代理:當主題實例化需要大量資源時,我們可以選擇使用此模式。 我們在此處創建的代理類稱為虛擬代理。 一些示例用例將包括在網頁上加載非常高分辨率的圖像。 想法是將昂貴的資源的創建延遲到需要的時間為止
  • 保護代理:我們還可以使用代理類來控制對真實主題類的訪問。 例如,允許用戶根據其特定用戶角色訪問網站
  • 遠程代理:此實現的真實示例是Google Docs。 Web瀏覽器將代理對象保存在本地,然后與遠程服務器上的對象同步
  • UML圖:

    代理設計模式包含以下組件:

    • 主題:定義實際主題合同的接口
    • RealSubject :這是我們要為其提供代理的類
    • 代理:這是真實主題的代理類。 Proxy和RealSubject類均實現Subject接口
    • 客戶端 :通過Subject接口與代理交互的類

    Proxy和RealSubject類均實現Subject接口。 而且,客戶端與Subject界面進行交互,因此它隱藏了客戶端與代理進行交互而不是真實主題的事實。

    代理類包裝實際主題,并且可以將一些請求委托給真實主題。 但是,并非所有請求都委托給Subject類 代理能夠處理一些較輕的職責。

    示例實現:

    大多數組織在其場所內都提供受限的Internet訪問權限。 那么,如何實現呢?

    這個想法是創建一個保護代理。

    讓我們從定義WebServer接口開始:

    public interface WebServer { void makeRequest(String url); }

    在這里, makeRequest()方法負責使用特定端點調用Web服務器。

    現在,讓我們實現RealWebServer類,該類完成通過網絡API調用命中URL的實際工作:

    public class RealWebServer implements WebServer { ????@Override public void makeRequest(String url) { //code to hit a particular url } }

    最后,我們將創建一個代理服務器并將其公開給我們的客戶:

    public class ProxyServer implements WebServer { ?private RealWebServer realServer; private List<String> blockedSites = new ArrayList<>(); ?public ProxyWebServer() { this .realServer = new RealWebServer(); } RealWebServer(); } ?public void blockWebsite(String url) { this .blockedSites.add(url); } ?@Override public void makeRequest(String url) { if (!blockedSites.contains(url)) { this .realServer.makeRequest(url); } else { System.out.println( "This website is blocked. Contact your administrator" ); } } }

    這樣,所有被阻止的網站將在場所內不可用:

    //code in main method WebServer server = new ProxyWebServer(); server.blockWebsite( "www.facebook.com" ); ... server.makeRequest( "www.facebook.com" ); // Prints 'This website is blocked. Contact your administrator'

    結論:

    在本教程中,我們探討了代理設計模式。

    代理模式使我們可以推遲創建昂貴的資源,直到需要它為止,控制對真實主題的訪問或在本地表示遠程對象。

    Java Reflection API依賴于代理。 另外,Hibernate的惰性獲取邏輯在內部使用了這種模式。

    翻譯自: https://www.javacodegeeks.com/2019/09/proxy-design-pattern-java.html

    java設計模式代理模式

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的java设计模式代理模式_Java中的代理设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。