代理模式
什么是代理模式?
举个生活中的例子:代理商。我们生活中买的许多物品都是通过代理商那里购买的,比如旅行社,代理旅行、机票等业务,代理出口商品。代理商并不产生这些产品,他们是从厂家拿货,所以虽然是通过代理商那里买到了产品,实际物品还是属于厂家那里。代理商作为一种中间层,可以为消费者带来许多遍历,消费者不需要购买物品的时候跑到生产厂家。
再举个例子:老板与秘书。老板一般都很忙,如果一个客户相要见老板,打电话给老板,接电话的都是老板的秘书,然后由秘书再向老板转告,老板如果档期已满,则秘书直接告诉客户,今天无法见面。这里秘书也起到了一个代理的作用,秘书作为客户和老板之间的中间层,减轻了老板的工作量,或者阻挡了一些不想见的客户。
代理模式与上面两个例子基本类似。比如客户端和服务器端的通信(类比客户与老板间),代理作为中间层,当客户端请求服务器时,则会先经过代理,然后由代理去请求服务器,而此时客户端并不知道访问的是代理。这样的好处就是,减轻了服务器的压力,当请求大量资源,比如图片,或者服务器要处理很长时间时,通过代理就可以先返回一部分图片给客户端,而不是让用户一直等待。
代理可以控制对实际对象的访问。比如客户端向服务器端请求时,可能需要验证客户端的身份,那么代理就可以起这个作用,验证客户端的身份,控制客户端对服务器的请求。
代理模式的结构
- 抽象主题(Subject):它是一个接口,代理和实际主题(对象