代理模式指的是为另一个对象提供一个替身或占位符以控制对这个对象的访问。比如说现在有这样一个场景:客户带着需求去找公司,显然他不会直接去找软件工程师谈的,他会去找商务去谈,商务再去找软件工程师。商务可以进行谈判,也有可能在开发软件之前谈判失败,此时商务就会根据公司规则去结束和客户的合作关系,这些都不用软件工程师来处理。因此,代理的作用就是在真实对象访问之前或者之后加入对应的逻辑,或者根据其他规则控制是否使用真实对象。
代理模式按代理方式分为两种,静态代理和动态代理(当然也有按照其他方式来划分的,比方说按照代理目的来划分,可分为远程代理、虚拟代理和保护代理。读者可自行查阅相关知识)。
静态代理:若代理类在程序运行前就已经存在,那么这种代理方式被称为静态代理,这种情况下的代理类通常都是我们在Java代码中定义的。静态代理示例代码如下:
接口:
public interface HelloWorld {
public void sayHelloWorld();
}