代理模式可以理解为通过一个中间者来访问数据,比如我们通过代理来访问互联网,通过代理商购买游戏点卡等。这些都属于代理模式的设计思想。
上图为代理模式的一般数据交互逻辑。在Java后台开发中,使用RMI调用远程数据既采用了代理模式。
在我的实际开发中,以个人开发经验,使用代理模式最主要是为了解决如下两个问题:
- 封装访问远程数据的具体实现逻辑。即客户端只需调用Proxy提供的方法即可,不关心数据从哪里取,本地or远程。
- 提供一个统一的口径实现过滤。
下面分享一个使用到代理模式设计思想的代码样例。需求是这样的,前后端分离,前端统一使用$.ajax
来请求后端提供的RESTFULL服务。需要在框架层面做到系统级的异常处理,即开发人员不需再关心系统级的异常,只需要关注业务逻辑。
针对于该需求,明显是需要一个Proxy,通过一个Proxy来转发前后端的交互。或者说叫做数据请求过滤器的东西,来劫持所有的前端数据请求。最终的实现样例代码如下所示。
1 | (function(){ |
上一篇:设计模式系列之十二状态模式