代理模式在进行一些额外的处理后将请求委托给真实主体,例如应用检查是否需要处理请求,可能是基于一些凭证检查。
它有如下的类图
代理类具有对具体主题的直接引用。
装饰器模式丰富了组件的行为[像代理一样,它也做了一些额外的处理并将操作委托给真正的组件]。该模式的类图类似于代理模式,唯一的区别是它引用了组件的接口。
在代理类中拥有具体的真实主题使得单元测试变得困难,因为类应该只依赖于接口而不是实现。我的问题是,如果代理模式也有对真实主体公开的接口的引用,那么它是否等同于装饰器模式。在这种情况下,代理模式的类图也将如下所示