分为静态代理和动态代理。
    有两个类,分为委托类和代理类。
    委托类代表的就是原始的类,代理类就是在原有的委托类的代码上做一定程度的代码增强。

    举例:
    20多岁结婚,此时我们就需要办婚礼。但我们不会自己去举办婚礼,会委托专业的婚庆公司帮忙制定完整的流程去举办婚礼。此时,新人就是委托类,婚庆公司就是代理类。代理我们办好婚礼的具体事宜(婚礼节目,婚车安排,婚礼宴会等),而新人只需要走红毯结婚就行了。

    1. public interface ProxyInterface {
    2. // 需要代理的事情,比如:结婚
    3. void marry();
    4. }
    5. public class WeddingCompany implements ProxyInterface {
    6. private ProxyInterface proxyInterface;
    7. public WeddingCompany(ProxyInterface proxyInterface) {
    8. this.proxyInterface = proxyInterface;
    9. }
    10. @Override
    11. public void marry() {
    12. System.out.println("我们是婚庆公司的");
    13. System.out.println("我们在做结婚前的准备工作");
    14. System.out.println("节目彩排...");
    15. System.out.println("礼物购买...");
    16. System.out.println("工作人员分工...");
    17. System.out.println("可以开始结婚了");
    18. proxyInterface.marry();
    19. System.out.println("结婚完毕,我们需要做后续处理,你们可以回家了,其余的事情我们公司来做");
    20. }
    21. }
    22. public class NormalHome implements ProxyInterface {
    23. public NormalHome() {
    24. }
    25. @Override
    26. public void marry() {
    27. System.out.println("我们结婚啦~");
    28. }
    29. }
    30. public class Test {
    31. public static void main(String[] args) {
    32. ProxyInterface proxyInterface = new WeddingCompany(new NormalHome());
    33. proxyInterface.marry();
    34. }
    35. }

    以上代码为静态代理方法的实现,有关动态代理的相关代码及概念,请查看以下信息
    Java的三种代理方式