代理模式通过提供一个和真实对象相同的接口并控制对真实对象的访问,以此来增强或者控制真实对象的行为。当我们引入了某些第三方程序,但是又想对这个第三方程序进行一些功能的扩展,这个时候就可以使用代理模式,在代理对象里面调用第三方程序,并对请求入参和返回值做一些更改达到功能扩展的目的。
我们的经常使用的云数据库就用到了这种模式,我们的服务都是直接连接数据库的代理,而不是直接连接数据库的存储实例。数据库的代理进行了权限校验、SQL路由和查询结果的聚合、读写分离、以及对存储节点的管理等复杂功能。而这些客户端都感知不到,完全将代理当做真正的数据库存储实例使用。
我们的经常使用的云数据库就用到了这种模式,我们的服务都是直接连接数据库的代理,而不是直接连接数据库的存储实例。数据库的代理进行了权限校验、SQL路由和查询结果的聚合、读写分离、以及对存储节点的管理等复杂功能。而这些客户端都感知不到,完全将代理当做真正的数据库存储实例使用。