Proxy 模式的好处:重要关系的分离。这下面数据库的例子中,业务规则和数据库就被完全分开了。OrderImp 对于数据库没有任何依赖。
如果想更改数据库模式或者数据库引擎,我们可以在不影响Order,OrderImp以及其他任何其他业务领域的情况下完成。
我们在实际工作中经常会用到第三方的API.比如数据库引擎,中间件引擎,类库,等等。
我们一般有两种方法使用它们:
1.应用程序直接调用这些API去使用它们。
2.使用代理层来隔离应用业务规则和第三方的API。
图1: 直接调用API
图2: 通过proxy 层来访问API
图3:Proxy Mode 是如何倒置应用程序和层之间的依赖关系
proxy 模式分成3个部分:
1、interface 部分:也就是图1 例子中的order interface。声明了用户需要调用的所有方法。
2、implementation部分:也就是图1例子中的ordeImplementation。 在不涉及数据库操作的情况下,实现接口中的方法,主要实现业务逻辑规则。
3、proxy部分:也就是图1中的orderProxy。实现接口中的方法,操作数据库,并调用implementation中的业务逻辑。
图1 proxy 模式的静态模型
图2 proxy 模式的动态模型
Android IPC binder 中的proxy mode: