代理模式
代理模式(Proxy),通过代理类封装实际调用类,实现共同的接口,添加额外功能,跟装饰模式都是基于组合原理,区别是代理模式自身管理被代理对象的生命周期,而装饰模式由客户端进行控制.
伪代码例子:
interface ServiceInterface is
method operation()
class Service implements ServiceInterface is
// 实现实际业务逻辑
method operation()
class ServiceProxy implements ServiceInterface is
// 实际调用对象
field realService: Service
ServiceProxy(s: ServiceInterface) { realService = s }
// 实现相同方法
method operation() is
// 执行权限判断等额外操作
checkAccess()
realService.opeartion()
method checkAccess() is
// ...
class Client is
ServiceInterface s = new Service()
ServiceInterface sp = new ServiceProxy(s)
sp.operation()