2009年10月3日星期六

Proxy 代理设计模式

本来应该是A干的活,A不自己做,交给B去做。但是在外界(Client)看来都是A做的,B就是A的代理,这就是代理(Proxy)的设计模式。
现实中比如A电脑厂商生产的电脑,售后的维修服务交给B服务中心去做,B以A的名义去给客户修电脑,在用户看来和A直接维修一样。键盘坏了,鼠标坏了,B可以直接给用户修理,但是如果主板坏了,B就要送给A(厂家)去修理,修理好了B再给客户,在客户看来和B自己修理好一样。换句话说,客户只管电脑坏了拿送给B即可,具体谁修理不用关心。
类示例如下

class PcMakerA //电脑厂家
{
repairMainBoard();{}//修理主板
repairMonitor();{}//修理显示器
}

class ServiceCenterB //售后服务代理
{
repairMouse();{} //修鼠标
repariKeyboard();{}//修键盘
repairMainBoard(){}//修主板(自己修不了,让厂家去修:我只是代理)
{
pcMakerA = New PcMakerA();
pcMakerA.repairMainBoard();
}
repairMonitor()//修显示器(自己修不了,让厂家去修:我只是代理)
{
pcMakerA = New PcMakerA();
pcMakerA.repairMonitor();
}
}
class Client //顾客
{
serviceCenter = new ServiceCenterB();
serviceCenter.repairMainBoard();//给我修主板
serviceCenter.repariKeyboard();//给我修键盘
}

没有评论:

发表评论