java代理模式_静态代理

2021-10-28  本文已影响0人  指下光年

代理模式

代理模式在java中是一种比较常见的设计模式。设计目的是在服务类与客户类之间插入其他功能,插入的功能对于调用者是透明的,起到伪装控制的作用。

静态代理

某个对象提供一个代理,代理角色固定,以控制对这个对象的访问。代理类和委托类有公共的父类或父接口,这样在使用委托类对象的地方都可以用代理对象代替。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求的后续操作。

  1. 有共同的行为(租房)- 接口
  2. 目标角色(租客)- 实现行为
  3. 代理角色(中介)- 实现行为 增强目标对象行为
  1. 目标角色固定
  2. 在应用程序执行前就得到目标角色
  3. 代理对象会增强目标对象的行为
  4. 有可能存在多个代理,引起类爆炸(缺点)

共同行为:租房(接口)

//定义接口
public interface RentHouse {
    //定义行为
    public void toRentHouse();
}

目标角色:租客(接口实现)

//目标对象,实现行为
public class ZuKe implements RentHouse{
    @Override
    public void toRentHouse() {
        System.out.println("我要租房,预算5000");
    }
}

代理角色:中介(接口实现)

//代理对象:1.实现行为;2.增强目标对象的行为
public class ZhongJieProxy implements RentHouse{

    private RentHouse rentHouse;

    public ZhongJieProxy(RentHouse rentHouse) {
        this.rentHouse = rentHouse;
    }

    @Override
    public void toRentHouse() {、
        //增强实现
        System.out.println("寻找房源。。。。");
        //接口实现
        rentHouse.toRentHouse();
        //增强实现
        System.out.println("准备合同。。。。");
    }
}

测试

public class App {
    public static void main( String[] args ) {
        //目标对象
        RentHouse rentHouse = new ZuKe();
        //代理对象(传递目标对象)
        ZhongJieProxy zhongJieProxy = new ZhongJieProxy(rentHouse);
        //通过调用代理对象中的方法,执行目标对象的行为
        zhongJieProxy.toRentHouse();
    }
}

结果

"C:\Program Files\Java\jdk1.8.0_291\bin\java.exe"
寻找房源。。。。
我要租房,预算5000
准备合同。。。。
Disconnected from the target VM, address: '127.0.0.1:63985', transport: 'socket'

Process finished with exit code 0
上一篇 下一篇

猜你喜欢

热点阅读