快速开发网站的应用程序移动网站开发 公众号

张小明 2026/1/10 8:22:17
快速开发网站的应用程序,移动网站开发 公众号,租用阿里云做网站,wordpress 分类文章列表分页Spring 框架中用到的设计模式包括#xff1a; 工厂设计模式 : Spring 使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。代理设计模式 : Spring AOP 功能的实现。单例设计模式 : Spring 中的 Bean 默认都是单例的。模板方法模式 : Spring 中 jdbcTemplate、…Spring 框架中用到的设计模式包括工厂设计模式: Spring 使用工厂模式通过BeanFactory、ApplicationContext创建 bean 对象。代理设计模式: Spring AOP 功能的实现。单例设计模式: Spring 中的 Bean 默认都是单例的。模板方法模式: Spring 中jdbcTemplate、hibernateTemplate等以 Template 结尾的对数据库操作的类它们就使用到了模板模式。包装器设计模式: 我们的项目需要连接多个数据库而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。观察者模式:Spring 事件驱动模型就是观察者模式很经典的一个应用。适配器模式:Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配Controller。……控制反转IoC和依赖注入DIIoC(Inversion of Control,控制反转)是 Spring 中一个非常非常重要的概念它不是什么技术而是一种解耦的设计思想。IoC 是一个原则而不是一个模式以下模式但不限于实现了 IoC 原则。控制反转怎么理解呢?举个例子对象 a 依赖了对象 b当对象 a 需要使用对象 b 的时候必须自己去创建。但是当系统引入了 IOC 容器后 对象 a 和对象 b 之间就失去了直接的联系。这个时候当对象 a 需要使用 对象 b 的时候 我们可以指定 IOC 容器去创建一个对象 b 注入到对象 a 中。 对象 a 获得依赖对象 b 的过程,由主动行为变为了被动行为控制权反转这就是控制反转名字的由来。DI(Dependency Inject,依赖注入)是实现控制反转的一种设计模式依赖注入就是将实例变量传入到一个对象中去。工厂设计模式Spring 使用工厂模式可以通过BeanFactory或ApplicationContext创建 bean 对象。两者对比BeanFactory延迟注入(使用到某个 bean 的时候才会注入),相比于ApplicationContext来说会占用更少的内存程序启动速度更快。ApplicationContext容器启动的时候不管你用没用到一次性创建所有 bean 。BeanFactory仅提供了最基本的依赖注入支持ApplicationContext扩展了BeanFactory,除了有BeanFactory的功能还有额外更多功能所以一般开发人员使用ApplicationContext会更多。单例设计模式使用单例模式的好处:对于频繁使用的对象可以省略创建对象所花费的时间这对于那些重量级对象而言是非常可观的一笔系统开销由于 new 操作的次数减少因而对系统内存的使用频率也会降低这将减轻 GC 压力缩短 GC 停顿时间。Spring 中 bean 的默认作用域就是 singleton(单例)的。// 通过 ConcurrentHashMap线程安全 实现单例注册表 private final MapString, Object singletonObjects new ConcurrentHashMapString, Object(64); public Object getSingleton(String beanName, ObjectFactory? singletonFactory) { Assert.notNull(beanName, beanName must not be null); synchronized (this.singletonObjects) { // 检查缓存中是否存在实例 Object singletonObject this.singletonObjects.get(beanName); if (singletonObject null) { //...省略了很多代码 try { singletonObject singletonFactory.getObject(); } //...省略了很多代码 // 如果实例对象在不存在我们注册到单例注册表中。 addSingleton(beanName, singletonObject); } return (singletonObject ! NULL_OBJECT ? singletonObject : null); } } //将对象添加到单例注册表 protected void addSingleton(String beanName, Object singletonObject) { synchronized (this.singletonObjects) { this.singletonObjects.put(beanName, (singletonObject ! null ? singletonObject : NULL_OBJECT)); } } }代理设计模式代理模式在 AOP 中的应用详见Spring - 基础知识 - AOP模板方法模板方法模式是一种行为设计模式它定义一个操作中的算法的骨架而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤的实现方式。Spring 中JdbcTemplate、HibernateTemplate等以 Template 结尾的对数据库操作的类它们就使用到了模板模式。一般情况下我们都是使用继承的方式来实现模板模式但是 Spring 并没有使用这种方式而是使用 Callback 模式与模板方法模式配合既达到了代码复用的效果同时增加了灵活性。观察者模式观察者模式介绍详见 - 设计模式Spring 事件驱动模型就是观察者模式很经典的一个应用。Spring 事件驱动模型非常有用在很多场景都可以解耦我们的代码。比如我们每次添加商品的时候都需要重新更新商品索引这个时候就可以利用观察者模式来解决这个问题。Spring 的事件流程定义一个事件: 实现一个继承自ApplicationEvent并且写相应的构造函数定义一个事件监听者实现ApplicationListener接口重写onApplicationEvent()方法使用事件发布者发布消息: 可以通过ApplicationEventPublisher的publishEvent()方法发布消息。适配器模式适配器模式介绍详见 - 设计模式Spring AOP中的适配器模式Spring AOP 的增强或通知(Advice)使用到了适配器模式与之相关的接口是AdvisorAdapter。Advice 常用的类型有BeforeAdvice目标方法调用前,前置通知、AfterAdvice目标方法调用后,后置通知、AfterReturningAdvice(目标方法执行结束后return 之前)等等。每个类型 Advice通知都有对应的拦截器:MethodBeforeAdviceInterceptor、AfterReturningAdviceInterceptor、ThrowsAdviceInterceptor等等。Spring 预定义的通知要通过对应的适配器适配成MethodInterceptor接口(方法拦截器)类型的对象如MethodBeforeAdviceAdapter通过调用getInterceptor方法将MethodBeforeAdvice适配成MethodBeforeAdviceInterceptor。Spring MVC中的适配器模式在 Spring MVC 中DispatcherServlet根据请求信息调用HandlerMapping解析请求对应的Handler。解析到对应的Handler也就是我们平常说的Controller控制器后开始由HandlerAdapter适配器处理。HandlerAdapter作为期望接口具体的适配器实现类用于对目标类进行适配Controller作为需要适配的类。装饰者模式装饰者模式可以动态地给对象添加一些额外的属性或行为。相比于使用继承装饰者模式更加灵活。简单点儿说就是当我们需要修改原有的功能但我们又不愿直接去修改原有的代码时设计一个 Decorator 套在原有代码外面。其实在 JDK 中就有很多地方用到了装饰者模式比如InputStream家族InputStream类下有FileInputStream(读取文件)、BufferedInputStream(增加缓存,使读取文件速度大大提升)等子类都在不修改InputStream代码的情况下扩展了它的功能。Spring 中配置 DataSource 的时候DataSource 可能是不同的数据库和数据源。我们能否根据客户的需求在少修改原有类的代码下动态切换不同的数据源这个时候就要用到装饰者模式(这一点我自己还没太理解具体原理)。Spring 中用到的包装器模式在类名上含有Wrapper或者Decorator。这些类基本上都是动态地给一个对象添加一些额外的职责。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站 水印网站如何适应屏幕

Spring Boot 概述Spring Boot 是一个基于 Spring 框架的开源项目,旨在简化 Spring 应用的初始搭建和开发过程。通过自动配置、约定优于配置的原则,以及内嵌服务器等特性,Spring Boot 显著减少了开发者的配置工作,使得快速构建独立…

张小明 2026/1/8 20:59:52 网站建设

杭州网站开发招聘淘宝网页设计招聘

微PE环境下备份IndexTTS2核心数据的完整实践指南 在本地AI语音项目开发中,最令人崩溃的场景之一莫过于系统重装后发现训练好的模型和配置文件全部丢失——尤其是那些动辄数GB、下载一次就要半天的TTS模型缓存。对于使用 IndexTTS2 这类依赖大量本地资源的中文语音合…

张小明 2026/1/8 9:22:31 网站建设

网站首页效果图怎么设计室内装修设计在哪里学

GitHub镜像网站与高效大模型开发实践 在人工智能研发日益普及的今天,一个看似不起眼却影响深远的问题困扰着国内开发者:为什么下载一个开源模型动辄需要几个小时,甚至频繁中断?尤其当你要复现一篇论文、微调一个70亿参数的大模型时…

张小明 2026/1/8 14:54:07 网站建设

做一个棋牌网站要多少钱wordpress首页不同列表样式

PvZ Toolkit植物大战僵尸修改器:完整功能解析与高效使用指南 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit PvZ Toolkit作为植物大战僵尸PC版的终极修改工具,为玩家提供了全…

张小明 2026/1/8 15:48:12 网站建设

软文街官方网站成都百度爱采购

还在为鸿蒙设备调试时反复插拔数据线而烦恼吗?是否曾梦想过像操作本地设备一样流畅地远程控制鸿蒙终端?今天,让我们一起探索这款让鸿蒙开发效率翻倍的远程真机工具——HOScrcpy。 【免费下载链接】鸿蒙远程真机工具 该工具主要提供鸿蒙系统下…

张小明 2026/1/8 17:34:51 网站建设

上海十大网站建WordPress自动退出

终极任务栏美化神器:CenterTaskbar让你的Windows桌面焕然一新 【免费下载链接】CenterTaskbar Center Windows Taskbar Icons 项目地址: https://gitcode.com/gh_mirrors/ce/CenterTaskbar 想要让Windows任务栏看起来更加整洁专业吗?CenterTaskba…

张小明 2026/1/9 20:23:08 网站建设