当前位置: 首页 > 图灵资讯 > 技术篇> Proxy模式

Proxy模式

来源:图灵教育
时间:2023-05-29 13:53:36

interface IService {public void execute();}class ServiceImpl implements IService {public ServiceImpl() {System.out.println("ServiceImpl is create");}@Override public void execute() {System.out.println("ServiceImpl.service is running...");}}public class Proxy implements IService {private IService service;public Proxy(IService service) {this.service = service;}@Override public void execute() {System.out.println("Proxy.service is calling ...");this.service.execute();}public static void main(String[] args) {IService proxy = new Proxy(new ServiceImpl());proxy.execute();IService virtualProxy = new VirtualProxy();virtualProxy.execute();}}///虚拟代理classss VirtualProxy implements IService {private IService service;public VirtualProxy() {}@Override public void execute() {System.out.println("VirtualProxy.service is calling ...");if (this.service == null)this.service = new ServiceImpl();this.service.execute();}}

输出为:

ServiceImpl is createProxy.service is calling ...ServiceImpl.service is running...VirtualProxy.service is calling ...ServiceImpl is createServiceImpl.service is running...

* 代理模式:代理类与业务类实现相同的业务接口,代理类通过构造器参数持有业务类对象。 在实现业务方法时,代理可以调用真正的业务对象方法来实现业务逻辑,并可以在业务方法中进行权限控制

并添加截面逻辑,以实现业务代理。* 意图: 为其他对象提供代理,以控制对该对象的访问。* 远程代理(Remote Proxy)为不同地址空间的对象提供本地代理对象。* 虚拟代理(Virtual Proxy)根据需要创建成本高的对象。假如需要创建一个资源消耗较大的对象,

首先创建一个消耗相对较小的对象来表示,真正的对象只有在需要时才会真正创建。 * 保护代理(Protection Proxy)控制对原始对象的访问。当对象应具有不同的访问权限时,应使用保护代理。* 延迟加载是用代理模式实现延迟加载的经典应用 Hibernate 框架里面。* 指针引用是指代理人在调用真实对象时处理其他事情。例如,计算真实对象的引用次数。