1:概述
代理模式关键在于代理,究其所以简单一点来说就是给人加一个秘书,你以前要找这个人办的所有事,现在都去找这个秘书,然后秘书根据情况去通知那个人干活,(注意最后能干活的还是原来的那个人,而秘书本身并没有什么做事的能力)
2:结构图
3:具体解释
抽象角色:声明真实对象和代理对象的共同接口。
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象 可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。(这一段是引用)
代理模式的重点就是这个代理角色。当然它的优点和缺点也来自这个角色
优点:
1:安全代理:不用直接去访问对象,通过代理访问可以封装一些权限问题,可以只暴露想暴露的方法
2:虚拟代理,访问网站的网速慢的时候有一些图片会以虚拟代理的形式加载出来,这样的好处就是,可以根据需要创建开销很大的对象,就像加载图片一样,只有在客户端有需要的时候才点击加载
3:远程代理:一般用于客户端/服务器之间
4:智能指引:一般用于指针的计数操作
缺点:
1:加大了系统的复杂度
2:多了代理一层的过度,会使请求的响应速度变慢
4:自己的见解
代理模式的使用对象,最好是那种特别重要的类成员,或者有特别的用处的场景,比如上文的浏览网页的时候。不要轻易的使用这个模式,会使代码的阅读难度加大