摘要:聊完了工厂模式,下面我们来说框架中的另一个核心设计模式代理模式。这里的外卖小哥就相当于是我们的代理。主要分为代理和代理。
聊完了工厂模式,下面我们来说Spring框架中的另一个核心设计模式——代理模式(Proxy Pattern)。代理模式
大家可以先不用看概念,先举个吃饭的例子:比如说我们想吃饭,我们可以选择自己做饭吃、去饭店吃、叫外卖吃。如果我们选择自己做着吃,我们就需要去买菜、做饭、吃饭、吃完饭还要刷碗。其实我们真正想做的就只有吃饭而已,其他的都是与业务无关,但是又不得不做的事。但是我们叫外卖就不一样了,外卖小哥会把饭送到我们手里,吃完饭我们也不需要刷碗,直接把包装扔掉就可以了,我们这里先不讨论环保的问题。这里的外卖小哥就相当于是我们的代理。代理我们去饭店,或者买菜的过程。
有了代理我们就可以更专注于我们真正要做的事--吃饭。代理可以帮我们把一些脏活累活全都干了。
在我们写代码过程中那些是脏活累活呢?
举个最简单的例子:在JDBC中,当我们完成数据库操作之后,我们还要关闭一堆Connection、Statement、ResultSet而且每个都还要判空,还要捕获异常,要多麻烦有多麻烦。有了代理我们就可以把这些都交给代理去做,自己只做最核心的业务逻辑就可以了。
当然代理模式还有一些其他的用途:
日志管理;
事务控制;
权限管理;
那么有人就会问了:代理模式最终不是还是得我们自己实现吗?既然这样,我们直接将这些逻辑直接写在代码内部反而更简单了呢?
这就涉及到两种代理模式的分类:静态代理和动态代理。虽然他们的理论都是一致的,但是在实现方式上面却迥然不同。
静态代理: 每当我们想代理一个类,我们就要为这个类创建一个相应的代理类,让它在我们的业务基础上做一些琐碎的事,但是这就像上面的朋友的疑问一样,我们直接将这些逻辑直接写在代码内部反而更简单。但是这并不代表静态代理就是一无是处。至少他做到了,业务代码与其他代码的分离。并且静态代理也是我们理解动态代理的基础。
动态代理:通过Java反射的方式为一批具有相同代理逻辑的类动态的创建代理,这样可以大大的提高了我们的开发的效率。主要分为JDK代理和CGlib代理。但是它也有缺点,那就是实现太过于复杂。
但是Spring框架却为我们克服了动态代理的缺点,使我们不需要在考虑动态代理的编写,而是为我们自动生成动态代理,让我们开发变得更加如鱼得水。下一篇我们就直奔我们的主题具体聊聊我们的Spring框架,看它是如何做到的。
还是那句话,这里只是记录我个人的理解,如果大家需要更加深入的了解可以参考菜鸟教程.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68185.html
摘要:模块负责的所有面向切面的功能。总结的统一管理,降低了对象之间的耦合对主流的框架提供了很好的集成支持提供众多组件,事务管理,等具有高度可开放性,开发者可以自由选择部分或全部主要使用工厂模式和代理模式。 聊完了Spring框架中最重要的两种设计模式,我们来看一下Spring框架的模块和结构图。 Spring框架的结构 下图是Spring官方给出的Spring框架的结构图。 showImg(...
摘要:系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。传统架构升级困难。新的轻量级协议容器化的出现。熔断处理在微服务出现问题时防止出现雪崩效应。 聊完Spring Boot,我们来看看Spring Boot最重要的一方面的应用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我们先聊聊微服务。 ...
摘要:相对于工厂模式,抽象工厂模式生产的对象更加具体,也更加丰富,但相对编码也更加复杂。具体的抽象工厂模式的实现大家可以参考菜鸟教程。知道了工厂模式和抽象工厂模式的区别,请大家使用的时候应该根据具体的情况进行选择。 大家好,今天给大家分享一些Spring的学习心得,在讲Spring之前,先和大家分享Spring中核心的设计模式。 工厂模式 在聊概念之前我先问问大家:什么是工厂? 这个很简单,...
摘要:通过我们可以更轻松地入门,更简单的使用的框架。团队为了摆脱框架中各类繁复纷杂的配置,使用约定优于配置的思想,在基础上整合了大量常用的第三方库的开发框架。这里还要说的一点,的出现并不是单纯的为了简化开发,更是为做铺垫。 说完了Spring 我们来聊聊Spring的进阶版Spring Boot,如果你还不知道Spring Boot,那希望这篇文章能够为你指明方向。 Spring Boot ...
摘要:是结构在框架中的一种表现形式。这句话听起来有点绕,我们可以看一下下面这张图,大家可以吧容器中的理解为全局变量,吧容器中的理解为局部变量。在方法体中可以访问局部变量和全局变量,但是在方法外,就只能访问全局变量,是不能访问局部变量的。 聊完了Spring,我们来看看Spring在web方面的应用Spring MVC。 MVC 首先我们来看什么是mvc? 大家知道在jsp里面也是可以写jav...
阅读 2247·2021-11-23 09:51
阅读 1041·2021-11-18 10:02
阅读 3434·2021-10-13 09:49
阅读 1262·2021-09-22 14:57
阅读 10388·2021-08-18 10:20
阅读 1181·2019-08-30 15:55
阅读 2225·2019-08-29 16:06
阅读 3231·2019-08-29 11:14