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