Java(基础)代理模式(Proxy)

概述:

为其他对象提供一种代理以控制对这个对象的访问。

package com.day14.interfaceTest;
/*
        代理模式:把代理对象当成被代理对象来使用

        使用场景1:
            无法直接使用被代理对象时。
        使用场景2:
            增强被代理对象的方法,同时又不能修改被代理类。通过代理类增强业务方法
 */
interface HoseRent{
    void rent();
}
class landlord implements HoseRent{

    @Override
    public void rent() {
        System.out.println("房屋出租");
    }
}
class landlord2 implements HoseRent{

    @Override
    public void rent() {
        System.out.println("房屋出租222");
    }
}
class intermediary implements HoseRent{
    //关联被代理对象
    private HoseRent ld = new landlord2();
    @Override
    public void rent() {
        //中介出租房东房子
        System.out.println("收取中介费");
        ld.rent();//被代理对象的方法调用 这就是切面       //面向切面编程
        System.out.println("收取房租");
    }
}


public class ProxyTest {
    public static void main(String[] args) {
        //客户要租房
        // new landlord();
        HoseRent hr = new intermediary();//面向接口编程
        hr.rent();
    }
}

应用场景:

安全代理:屏蔽对真实角色的直接访问。

远程代理:通过代理类处理远程方法调用(RMI)

延迟加载:先加载轻量级的代理对象,真正需要再加载真实对象 比如你要开发一个大文档查看软件,大文档中有大的图片,有可能一个图片有 100MB,在打开文件时,不可能将所有的图片都显示出来,这样就可以使用代理 模式,当需要查看图片时,用proxy来进行大图片的打开。

经验分享 程序员 微信小程序 职场和发展