分为静态代理和动态代理。
有两个类,分为委托类和代理类。
委托类代表的就是原始的类,代理类就是在原有的委托类的代码上做一定程度的代码增强。
举例:
20多岁结婚,此时我们就需要办婚礼。但我们不会自己去举办婚礼,会委托专业的婚庆公司帮忙制定完整的流程去举办婚礼。此时,新人就是委托类,婚庆公司就是代理类。代理我们办好婚礼的具体事宜(婚礼节目,婚车安排,婚礼宴会等),而新人只需要走红毯结婚就行了。
public interface ProxyInterface {
// 需要代理的事情,比如:结婚
void marry();
}
public class WeddingCompany implements ProxyInterface {
private ProxyInterface proxyInterface;
public WeddingCompany(ProxyInterface proxyInterface) {
this.proxyInterface = proxyInterface;
}
@Override
public void marry() {
System.out.println("我们是婚庆公司的");
System.out.println("我们在做结婚前的准备工作");
System.out.println("节目彩排...");
System.out.println("礼物购买...");
System.out.println("工作人员分工...");
System.out.println("可以开始结婚了");
proxyInterface.marry();
System.out.println("结婚完毕,我们需要做后续处理,你们可以回家了,其余的事情我们公司来做");
}
}
public class NormalHome implements ProxyInterface {
public NormalHome() {
}
@Override
public void marry() {
System.out.println("我们结婚啦~");
}
}
public class Test {
public static void main(String[] args) {
ProxyInterface proxyInterface = new WeddingCompany(new NormalHome());
proxyInterface.marry();
}
}
以上代码为静态代理方法的实现,有关动态代理的相关代码及概念,请查看以下信息
Java的三种代理方式