proxy - 代理, 被代理方(B)与代理方(A)的接口完全一致。
主要使用场景(语义)应该是:为简化编程(或无法操作B),不直接把请求交给被代理方(B),而把请求交给代码方(A),由代理方与被代理方进行通信,以完成请求。
delegete - 委托,主要语义是:一件事情(或一个请求)对象本身不知道怎样处理,对象把请求交给其它对象来做。
proxy 由代理接收请求,被代理者执行;delegate 由委托发起者接收请求你,委托给别人做。
举个栗子将上面串起来,你向公司人力资源部发起一个请求让他们处理一下你的人事档案,可人力资源部是群懒汉,于是他们找了(delegate)代办(Proxy),即将该工作委托给了代理,
代办拿着基本信息跑去人才市场(被代理者)去办理了。人力资源的懒汉其实可以自己去人才市场办啊,老板要砍死他们!请注意代办与委托是种相对关系,角色容易发生相对转换!!
人力资源部委托给代理,代理委托给人才市场。反过来的关系是:代办是人才中心的代理,人力资源部是代办中介的代理。
结构形式是一样的,接收请求的类并不直接处理该业务逻辑,而是转出去交给别人,主要是语义上的区别! 具体完成工作的对象是:被代理或者被委托的对象!
委托和代理是两个关系十分密切的概念!不管是代理或者被代理的对象,对于委托发起人来说都一样,即只要完成委托发起人的任务就好,是否通过代理,委托发起人不太关系!