代理模式轻松入门

代理模式主要是通过代理,对真正的业务逻辑进行封装,要实现相关的业务的时候,由代理类进行相关的操作,这样一来,实现了真正业务类与系统的隔离。这么做的好处是避免了真正业务类与系统的直接接触
代理模式中涉及到四个角色分别是
主题接口(subject):真正业务类和代理类都要实现的接口
真正业务类:实现了主题接口的业务类,真正要实现的逻辑
代理类:持有真正业务类的引用,对其封装之后替其实现业务逻辑。
客户端:代理类和主题工作的地方。
下面以一个例子来说明,在这个例子中,我们先定义一个接口

public interface Query {
    void request();

}

然后我们创建了实现这个接口的真正业务类,在这里我们假设这个业务类需要完成一些耗时较大的操作


public class RealQuery implements Query {

    @Override
    public void request() {
        try {
            Thread.sleep(10000);//假设这里的业务操作的初始化耗时比较长
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("这是真正的业务逻辑");

    }

}

再定义一个代理类,这个代理类也是实现了主题接口

public class ProxyQuery implements Query {

    private RealQuery  realQuery ;
    @Override
    public void request() {
        if (realQuery==null) {
            realQuery = new RealQuery();//懒加载
        }
        realQuery.request();

    }

}

最后我们来调用一下

public class ProxyPatternDemo {

    public static void main(String[] args) {
        long now = System.currentTimeMillis();
        System.out.println("系统开始启动");
        Query query = new ProxyQuery();
        System.out.println("启动完成,耗时"+(System.currentTimeMillis()-now)+"毫秒");
        query.request();//在真正需要业务调用的时候才去初始化相关配置
        System.out.println("业务处理耗时:"+(System.currentTimeMillis()-now)+"毫秒");

    }

}

结果:

系统开始启动
启动完成,耗时1毫秒
这是真正的业务逻辑
业务处理耗时:10005毫秒

结论:可以看出,真正业务操作耗时较长,如果我们在启动系统的时候,直接调用的话,那系统启动耗时的时间就变长,这在实际应用中可能会影响其他的业务,我们使用代理就变为延时加载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值