博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts+spring+hibernate分别用到了什么设计模式
阅读量:4221 次
发布时间:2019-05-26

本文共 1845 字,大约阅读时间需要 6 分钟。

struts+spring+hibernate分别用到了什么设计模式,请大家知无不答,共同讨论。
并举例说明哪个框架的哪个地方用到了哪个java设计模式.
Spring 实现两种设计模式
在 Spring 中大量使用的以下两种设计模式:
工厂模式
工厂模式可将 Java 对象的调用者从被调用者的实现逻辑中分离出来,调用者只需关心被调用者必须满足的规则(接口) ,而不必关心实例的具体实现过程。这是面向接口编程的优势,能提高程序的解稿,避免所有的类以硬编码方式糯合在一起。
如果所有的类直接祸合,极易形成"骨牌效应",假如 B 类调用了 A 类,一旦 A 类需要修改,则 B 类也需要修改:假如 C 类调用了 B 类,则 C 类也需要修改......依次类推,从而导致整个系统都需要改写。造成"牵一发而动全身",而系统重构的代价是相当高的。
Spring 倡导"面向接口编程飞可以避免上述的问题,使设计良好的架构可保证系统重构的i作被封闭在重构的层内,绝不会影响其他层,这可以在本书后面的示例中看到。
Spring 容器是实例化和管理全部 bean 的i厂, 
单态模式
Spring 默认将所有的 bean 设置成单态模式,无须自己完成单态模式,即对所有相同id 的 bean 请求都将返回同一个共享实例。因此,单态模式可大大降低 Java 对象在创建和销毁时的系统开销。
派遣器模式

  Spring有一个统一集中的派遣器org.springframework.web.servlet.DispatcherServlet,   一般在web.xml中把所有的页面 请求都发送到该派遣器:   

<servlet>   

<servlet-name>countries</servlet-name>   

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   

<load-on-startup>2</load-on-startup>   

</servlet>   

<servlet-mapping>   

<servlet-name>countries</servlet-name>   

<url-pattern>*.htm</url-pattern>   

</servlet-mapping>   

控制器 模式   派遣器收到请求后,把不同的页面派遣到不同的控制器进行处理:   

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">   

<property name="mappings">   

<props>   

<prop key="/home.htm">countriesController</prop>   

<prop key="/notfound.htm">errorsController</prop>   

</props>   

</property>   

</bean>   

Spring有两种MAPPING的机制,默认为BeanNameUrlHandlerMapping,我们这里采用的是 SimpleUrlHandlerMapping.   

拦截器模式   在控制器处理前,我们可以将其拦截,进行一些特殊或通用处理;拦截器可以选用Spring已经实现   的或我们自己实现的:   

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">   

<property name="interceptors">

<list>   

<ref local="localeChangeInterceptor"/>   

<ref local="themeChangeInterceptor"/>   

<ref local="copyInterceptor"/>   

</list>   

</property>   

</bean>   

其实我们在平常的开发中,也经常用到上面的设计模式 ;只是Spring的实现比较优美,所以Spring   能很快流行. 

转载地址:http://bclmi.baihongyu.com/

你可能感兴趣的文章
上海控安入选首批工控安全防护能力贯标咨询机构名单
查看>>
自动驾驶汽车传感器数字孪生建模(一)
查看>>
CUDA 学习(四)、线程
查看>>
CUDA 学习(五)、线程块
查看>>
CUDA 学习(八)、线程块调度
查看>>
CUDA 学习(九)、CUDA 内存
查看>>
CUDA 学习(十一)、共享内存
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十四章 生化尖兵
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十五章 超级马里奥64
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十七章 游戏感的原理
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十八章 我想做的游戏
查看>>
游戏设计的艺术:一本透镜的书——第十章 某些元素是游戏机制
查看>>
游戏设计的艺术:一本透镜的书——第十一章 游戏机制必须平衡
查看>>
游戏设计的艺术:一本透镜的书——第十二章 游戏机制支撑谜题
查看>>
游戏设计的艺术:一本透镜的书——第十三章 玩家通过界面玩游戏
查看>>
编写苹果游戏中心应用程序(翻译 1.3 为iOS应用程序设置游戏中心)
查看>>
编写苹果游戏中心应用程序(翻译 1.4 添加游戏工具包框架)
查看>>
编写苹果游戏中心应用程序(翻译 1.5 在游戏中心验证本地玩家)
查看>>
编写苹果游戏中心应用程序(翻译 1.6 获取本地玩家的信息)
查看>>
编写苹果游戏中心应用程序(翻译 1.7 在游戏中心添加朋友)
查看>>