代理模式轻松入门

代理模式主要是通过代理,对真正的业务逻辑进行封装,要实现相关的业务的时候,由代理类进行相关的操作,这样一来,实现了真正业务类与系统的隔离。这么做的好处是避免了真正业务类与系统的直接接触
代理模式中涉及到四个角色分别是
主题接口(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
    评论
如果你想要轻松入门学习CANopen协议,我强烈推荐阅读周立功所著的《Canopen入门》文档。这本文档对于初学者来说非常适合,它提供了对CANopen协议的详细介绍和解释。 在学习CANopen协议时,你需要了解NMT管理和SDO通讯这两个基本要素。 NMT管理是每个CANopen从节点的协议栈中都必须具备的代码。它涉及到节点的状态管理。 而SDO通讯则是CANopen系统中的重要部分。在一个CANopen系统中,从节点是作为SDO服务器,而主节点则是作为SDO客户端,也称为CS通讯。SDO客户端可以通过索引和子索引访问SDO服务器上的对象字典,这样主节点就能够访问从节点的任意对象字典项的参数。同时,SDO也可以传输任意长度的数据,当数据长度超过4个字节时,会拆分成多个报文来传输。 通过学习这些基本要素,你将能够轻松入门CANopen协议。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [canopen轻松入门.pdf](https://download.csdn.net/download/big_kevin/11237554)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [1、Canopen 轻松入门](https://blog.csdn.net/oDuanYanGuHong/article/details/127074039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值