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来进行大图片的打开。
