代理模式

软件设计模式
2021-05-17 14:29 · 阅读时长3分钟
小课

代理模式是指给目标对象创建一个和它提供一样接口的中间层,我们可以在这个中间层对请求进行预处理或者善后处理,这个中间层就叫做代理,代理模式和对象适配器模式的结构有些相似,但是它们的作用不同。

当我们需要对目标对象的调用进行额外处理时,比如说以下场景。

  • 权限处理,当调用目标对象方法时,我们需要对调用者的身份进行确认,通过才可真正调用。
  • 添加日志记录,在调用目标方法前后添加日志记录。
  • 缓存结果,当需要对目标对象方法调用的结果进行缓存,在缓存有效时直接返回缓存。

还是以之前的搜索引擎SearchEngine为例,我们为现有的SearchEngine做一个缓存代理,如果有缓存则返回缓存,没有则执行搜索操作,并将结果缓存起来。

现有的ISearchEngine提供一个搜索方法,用于根据关键字搜索并返回结果,定义如下。

加载中...

代理类也实现了ISearchEngine,并且内部持有一个实现搜索功能的ISearchEngine实例。

加载中...
总结

在代理模式中,代理和被代理的对象实现了同样的接口,代理对象持有被代理对象的引用。代理模式可以让我们在不修改代码的情况下,对原有的类进行扩展,做一些前置和后置的工作。

代理模式proxy设计模式