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