• spring510


    10、代理模式

    为什么要学习代理模式?因为这就是SpringAOP的底层!【SpringAOP和SpringMVC】
    代理模式的分类:

    • 静态代理
    • 动态代理

    10.1、静态代理

    角色分析:

    • 抽象角色:一般会使用接口或者抽象类来解决
    • 真实角色:被代理的角色
    • 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
    • 客户:访问代理对象的人!

    代码步骤:
    1.接口

    package com.kuang.demo01;
    
    //租房
    public interface Rent {
    
        public void rent();
    }
    

    2.真实角色

    package com.kuang.demo01;
    
    public class Host implements Rent{
    
        public void rent() {
            System.out.println("房东要出租房子!");
        }
    }
    

    3.代理角色

    package com.kuang.demo01;
    
    public class Proxy implements Rent{
    
        private Host host;
    
        public Proxy(){
        }
        public Proxy(Host host) {
            this.host = host;
        }
    
    
        public void rent() {
            seeHouse();
            host.rent();
            hetong();
            fare();
        }
    
        //看房
        public void seeHouse(){
            System.out.println("中介带你看房!");
        }
        //签合同
        public void hetong(){
            System.out.println("签租赁合同");
        }
        //收中介费
        public void fare(){
            System.out.println("收中介费");
        }
    }
    

    4.客户端访问代理角色

    package com.kuang.demo01;
    
    public class Client {
        public static void main(String[] args) {
            //房东要出租房子
            Host host = new Host();
            //代理,中介帮房东出租房子,但是代理角色有一些附属操作!
            Proxy proxy = new Proxy(host);
    
            //你不用面对房东,直接找中介租房即可!
            proxy.rent();
    
    
        }
    
    }
    

    代理模式的好处:

    • 可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
    • 公共业务交给代理角色,实现了业务的分工!
    • 公共业务发生扩展的时候,方便集中管理!
      缺点:
    • 一个真实角色就会产生一个代理角色;代码量会翻倍,开发效率会变低。

    10.2、动态代理

    • 动态代理和静态代理角色一样
    • 动态代理的代理类是动态生成的,不是我们直接写好的!
    • 动态代理分为两类: 基于接口的动态代理,基于类的动态代理
      • 基于接口---JDK动态代理【这里使用的】
      • 基于类:cglib
      • java字节码实现:javasist

    需要了解的两个类:Proxy:代理,InvocationHandler:调用处理程序

    动态代理的好处:

    • 静态代理有的它都有
    • 一个动态代理类代理的是一个接口,一般就是对应的一类业务
    • 一个动态代理类可以代理多个类,只要是实现了同一个接口即可!
  • 相关阅读:
    jdbctemplate的batchUpdate使用方法
    js利用html5的canvas实现图像等比例压缩
    js前台通过EXIF.js获取图片中携带的经纬度信息
    Linux expr相关
    expect用于scp传输文件
    linux 自动登录ftp 获取文件
    作业8:单元测试练习(个人练习)
    作业7-用户体验设计案例分析
    作业6:团队作业——学生成绩录入系统设计与实现
    作业5:需求分析
  • 原文地址:https://www.cnblogs.com/techgy/p/16089496.html
Copyright © 2020-2023  润新知