【設計模式之代理模式】
前言:
今天我們學習的模式為代理模式,見名字如見該模式,代理模式,則提供一個代理,由代理對物件進行訪問,暫時先這麼理解!通過接下來的學習,大家肯定會對代理模式有一個全面的瞭解。
核心:
(一)定義
代理模式(Proxy),為其他物件提供一種代理控制對這個物件的訪問。
簡單的說,代理模式就是在訪問物件的時候引入一定程度的間接性。代理就是真實物件的代表。
(二)結構圖
(三)基本程式碼
Subject類,定義了RealSubject和Proxy的共用介面,這樣就在任何使用RealSubject的地方都可以使用Proxy
<span style="font-size:18px;">abstract class Subject
{
public abstract void Request();
}</span>
RealSubject類,定義Proxy所代表的真實實體
<span style="font-size:18px;">class RealSubject : Subject
{
public override void Request()
{
Console.WriteLine("真實的請求");
}
}</span>
Proxy類,儲存一個引用使得代理可以訪問實體,並提供一個與Subject的介面相同的介面,這樣代理就可以用來替代實體。
<span style="font-size:18px;">class Proxy : Subject
{
RealSubject realSubject;
public override void Request()
{
if (realSubject == null)
{
realSubject = new RealSubject();
}
}
}</span>
客戶端程式碼
<span style="font-size:18px;">static void Main(string[] args)
{
Console.Read();
Proxy proxy = new Proxy();
proxy.Request();
Console.Read();
}</span>
(四)應用
A.遠端代理
為一個物件在不同的地址空間提供區域性代表。這樣可以隱藏一個物件存在於不同的地址空間的事實。
B.虛擬代理
是根據需要建立開銷很大的物件。通過它來存放例項化需要很長時間的真實物件。虛擬代理可以進行最優化。
C.安全代理
用來控制真實物件訪問時的許可權
D.智慧代理
是指呼叫真實的物件時,代理處理另外的一些事。
(五)為什麼要使用代理?
使用者希望程式和某個物件打交道,程式不希望使用者直接訪問該物件。
(六)優缺點
優點:
代理模式能夠協調呼叫者和被呼叫者,在一定程度上降低了系統 的耦合度。
缺點:
·有些型別的代理模式可能會造成請求的處理速度變慢
·實現代理模式需要額外的工作,有些代理模式的實現非常複雜。
總結:
代理模式,很好的理解,有自己的缺點和優點,但在實際的專案中使用我們要好好考慮!
相關文章
- 設計模式之代理模式設計模式
- 《設計模式》之代理模式設計模式
- Javascript設計模式之代理模式JavaScript設計模式
- Java設計模式之代理模式Java設計模式
- 設計模式之代理設計模式
- 設計模式之代理模式(proxy pattern)設計模式
- 設計模式漫談之代理模式設計模式
- C++設計模式之代理模式C++設計模式
- Java設計模式之(五)——代理模式Java設計模式
- 23天設計模式之代理模式設計模式
- C++設計模式之Proxy模式(代理模式)C++設計模式
- 23種設計模式之代理模式(靜態代理)設計模式
- 設計模式之代理模式(結構型)設計模式
- 12.java設計模式之代理模式Java設計模式
- JavaScript設計模式經典之代理模式JavaScript設計模式
- 設計模式-代理模式設計模式
- 設計模式----代理模式設計模式
- 設計模式~代理模式設計模式
- 【設計模式】代理模式設計模式
- 設計模式——代理模式設計模式
- Java設計模式之七 —– 享元模式和代理模式Java設計模式
- javascript設計模式 之 3代理模式JavaScript設計模式
- 跟著GPT學設計模式之代理模式GPT設計模式
- 23種設計模式之——動態代理模式設計模式
- js設計模式--代理模式JS設計模式
- Java設計模式—代理模式Java設計模式
- Java設計模式-代理模式Java設計模式
- PHP設計模式-代理模式PHP設計模式
- 設計模式(十六)----結構型模式之代理享元模式設計模式
- 設計模式 #5 (策略模式、代理模式)設計模式
- 代理設計模式設計模式
- 設計模式之觀察和代理設計模式
- 設計模式之cglib動態代理設計模式CGLib
- Javascript設計模式(五)代理模式JavaScript設計模式
- JS設計模式四:代理模式JS設計模式
- Java 設計模式(四)《代理模式》Java設計模式
- 設計模式學習——代理模式設計模式
- 設計模式 - 代理模式詳解設計模式
- 設計模式——代理模式的思考設計模式