概述
- 代理模式:代理模式在不改变原始类接口的条件下,为原始类定义一个代理类,主要目的是控制访问,而非加强功能,这是它跟装饰器模式最大的不同。
- 装饰器模式:装饰者模式在不改变原始类接口的情况下,对原始类功能进行增强,并且支持多个装饰器的嵌套使用。
- 适配器模式:适配器模式是一种事后的补救策略。适配器提供跟原始类不同的接口,而代理模式、装饰器模式提供的都是跟原始类相同的接口。
代理模式
它在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。
- 一般情况下,让代理类和原始类实现同样的接口
- 如果原始类并没有定义接口,并且原始类代码并不是我们开发维护的,可以通过让代理类继承原始类的方法来实现代理模式
- 常用在业务系统中开发非功能性需求,比如:监控、统计、鉴权、限流、事务、幂等、日志等
- 将附加功能与业务功能解耦,放到代理类统一处理,方便让程序员只关注业务方面的开发
// author: suoxd123@126.com
public interface IRunner{
// 接口也可以替换成抽象类
void run();
}
public class Marathon : IRunner {
public void run() {
//... }
}
public class CrossCountryProxy : IRunner {
private IRunner runner;
public CrossCountryProxy(IRunner runner