代理模式有什么用?因为这个是SpringAOP的底层!【SpringAOP和SpringMVC】

  • 静态代理
  • 动态代理

1.静态代理

角色分析:

  • 抽象角色:一般会使用接口或者抽象类来解决
  • 真实角色:被代理的角色
  • 代理角色:代理真实的角色后,然后会做一些附属操作

代码步骤:

  1. 接口
//租房
public interface Rent {
    public void rent();

}
  1. 真实角色
//房东
public class Host implements Rent{

    @Override
    public void rent() {
        System.out.println("房东要出租房子");
    }
}
  1. 代理角色
public class Proxy implements Rent {

    private Host host;
    public Proxy(){
    }

    public Proxy(Host host){
        this.host = host;
    }

    @Override
    public void rent() {
        seeHouse();
        host.rent();
        hetong();
        fare();
    }

    //看房
    public void seeHouse(){
        System.out.println("中介带你看房!");
    }

    //收中介费
    public void fare(){
        System.out.println("收中介费");
    }

    //看房
    public void hetong(){
        System.out.println("签租聘合同");
    }
    
}
  1. 客户端访问代理角色
public class Client {
    public static void main(String[] args){
//        房东要出租房子
        Host host = new Host();
//        代理,中介帮房东租房子,但是会收取费用
        Proxy proxy = new Proxy(host);
        //你不用面对房东
        proxy.rent();
    }
}

代理模式的好处:

  • 可以使真实的操作更加纯粹!不用去关注一些公共的业务
  • 公共也就就交给代理角色!实现了业务的分工
  • 公共业务发生扩展的时候,方便几种管理

缺点:

  • 一个真实的角色会产生一个代理角色;代码量会翻倍-开发效率会变低

2.加深理解

代码对应spring-07-proxy demo2
聊聊AOP