淺讀《大話設(shè)計模式》————7、為別人做嫁衣——代理模式
通讀全文,我發(fā)現(xiàn)代理模式中的代理還是與現(xiàn)實中的代理還是不同的。代理模式中,真正動作人要代理做的事情,自己也要定義做的方法,就是自己要處理具體的事情。而代理,無非就是利用成員對象進行接口轉(zhuǎn)移罷了。但是現(xiàn)實世界,代理是要全權(quán)處理所代理的事情的。游戲開發(fā)公司完全只是開發(fā),與玩家的交互,服務(wù)器的維護則完全是運營代理商的事。所以,在學習代理模式時,我覺得應(yīng)該首先明白在思想上對這兩者進行弄明白。
代理模式:為其他對象提供一種代理以控制對這個對象的訪問[DP]。
如果從以上這個定義,我們還可以挖掘出另一種層次的意思:代理模式為真實對象的訪問提供了安全性屏障。
代理模式的設(shè)計:
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();
}
關(guān)于代理模式的幾個應(yīng)用,我沒看很明白,可能自己用得不多,不過似乎總結(jié)下來,代理模式起碼的作用有:控制對真實對象訪問的安全性;虛擬代理優(yōu)化對大對象的訪問;在真實對象操作之時,代理還可以做另外一些事情,使程序更智能。