淺讀《大話設計模式》————7、為別人做嫁衣——代理模式
通讀全文,我發現代理模式中的代理還是與現實中的代理還是不同的。代理模式中,真正動作人要代理做的事情,自己也要定義做的方法,就是自己要處理具體的事情。而代理,無非就是利用成員對象進行接口轉移罷了。但是現實世界,代理是要全權處理所代理的事情的。游戲開發公司完全只是開發,與玩家的交互,服務器的維護則完全是運營代理商的事。所以,在學習代理模式時,我覺得應該首先明白在思想上對這兩者進行弄明白。
代理模式:為其他對象提供一種代理以控制對這個對象的訪問[DP]。
如果從以上這個定義,我們還可以挖掘出另一種層次的意思:代理模式為真實對象的訪問提供了安全性屏障。
代理模式的設計:
1、Subject類,定義了RealSubject和Proxy的共用接口,這樣就在任何使用RealSubject的地方都可以使用Proxy.
abstract class Subject
{
Public abstract void Request();
}
2、RealSubject類,定義Proxy所代表的真實實體
Classs RealSubject: Subject
{
Public override void Request()
{
Console.WriteLine("真實的請求");
}
}
3、Proxy類,保存一個引用使得代理可以訪問實體,并提供一個與Subject的接口相同的接口,這樣代理就可以用來替代實體。
class Proxy : Subject
{
RealSubject realSubject;
Public override void Request()
{
If(realSubject == null)
{
realSubject = new RealSubject();
}
realSubject .Request() ;
}
}
4、客戶端代碼
Static void Main(string [] args)
{
Proxy proxy = new Proxy();
proxy.Request();
Console.Read();
}
關于代理模式的幾個應用,我沒看很明白,可能自己用得不多,不過似乎總結下來,代理模式起碼的作用有:控制對真實對象訪問的安全性;虛擬代理優化對大對象的訪問;在真實對象操作之時,代理還可以做另外一些事情,使程序更智能。