iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0

前言


今天上班的時候
師父剛好教我設定公司電腦的proxy😶‍🌫️
結果很巧的今天就輪到要來寫這篇!

定義


Proxy is a structural design pattern that lets you provide a substitute or placeholder for another object. A proxy controls access to the original object, allowing you to perform something either before or after the request gets through to the original object.
--Refactoring Guru

代理模式是一種結構型設計模式,它允許你為另一個物件提供一個substitute或是placeholder。Proxy是用來控制對原始物件的訪問,並允許你在把請求傳遞到原始物件之前或之後執行某些操作或處理。

Refactoring Guru

再更進一步的說明~

代理模式允許我們創建一個代表其他classes功能的class。Proxy可以把各種東西介面化,如網絡連接、記憶體中的大型物件、文件或其他複雜或不可能複製的資源。
我們也可以說Proxy是個由客戶端呼叫用以訪問幕後的真實物件的物件。Proxy的意思是代替或代表。這說明著在代理設計模式中,一個class代表了另一個class的功能。

代理模式是為了要解決那些問題?


代理模式通常是為了解決以下主要問題:

  1. 控制訪問
    Proxy模式允許你控制對一個物件的訪問。這對於實現訪問控制和權限管理非常有用。通過Proxy,你可以限制對某些物件的訪問,只允許特定操作或特定用戶訪問。
    例如企業或組織可以通過proxy伺服器來限制員工訪問特定網站,確保網絡使用符合政策和法規。

  2. 延遲載入Lazy Loading
    當一個物件的創建和初始化成本很高時,可以使用代理模式實現延遲載入。Proxy允許你推遲對該物件的創建,直到它被真正需要為止,從而提高應用程式的性能和效率。

  3. 遠端訪問
    在分散式系統中,代理模式可以用於處理遠端物件的訪問。Proxy充當了本機客戶端和遠端物件之間的中間人,處理通訊和遠端物件的生命周期管理,以實現遠端訪問。

  4. 效能優化
    Proxy模式還可以用於快取數據或結果,以減少計算或網絡請求的頻率,從而提高應用程式的效能。

  5. 安全性
    Proxy可以用於實現安全措施,例如保護代理(Protection Proxy),以確保只有具有相應權限的用戶可以訪問某些物件或資源。

底下這張圖是個清楚的例子(圖片來源: Refactoring Guru)

總之,Proxy模式通常用於需要控制對物件訪問、實現延遲載入、處理遠端訪問或實現其他額外功能的情境中。它有助於解耦程式碼,提高應用程式的可維護性和擴展性,並解決了與物件訪問相關的各種問題。

Proxy的種類有非常非常多,這些不同的代理類型在代理模式的框架下,用於解決各種不同的問題和應用場景。每種代理類型都具有特定的功能和目的,但它們都共享代理模式的核心思想。

UML



上一篇
[Day17] Design Pattern - Flyweight 享元模式
下一篇
[Day19] Design Pattern - Chain of Responsibility 責任鏈模式
系列文
Design Pattern - 無所不在的設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言