1、代理模式:在AOP和remoting中被用的比较多

2、单例模式:在spring配置文件中定义的bean默认为单例模式

3、模板方法模式:解决代码重复问题

父类定义骨架(共同方法的实现,调用哪些方法及顺序),某些特定方法由子类实现(父类是空方法,子类继承后再重写)

4、前端控制器模式:spring提供了DispatcherServlet来对请求进行分发

5、依赖注入模式:贯穿于BeanFactory和ApplicationContext接口的核心理念

6、工厂模式:

(1)简单工厂:

实现方式:BeanFactory根据传入一个唯一的标识来获得bean对象,由工厂类根据传入的参数动态决定应该创建哪一个产品类

实现原理:

bean容器的启动阶段:读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。然后通过BeanDefinitionRegistry将这些bean注册到beanFactory中。

容器中bean的实例化阶段:主要通过反射或者CGLIB对bean进行实例化

(2)工厂方法:

实现方式:FactoryBean接口

实现原理:实现了FactoryBean接口的bean是一类叫做factory的bean,特点是spring会在使用getBean()调用获得该bean时,自动调用该bean的getObject()方法。返回的是这个bean.getObject()方法的返回值。

典型例子:spring与mybatis的结合:

<bean  id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" ><bean>

//最终返回的是SqlSessionFactoryBean.getObject()的返回值

7、适配器模式

实现方式:springmvc中的适配器HandlerAdapter

实现过程:dispatcherServlet根据HandlerMapping返回的handler,向HandlerAdapter发起请求,处理handler。HandlerAdapter根据规则找到对应的Handler并让其执行,执行完毕后Handler会向HandlerAdapter返回一个ModelAndView,最后由HandlerAdapter向dispatcherServlet返回一个ModelAndView

8、装饰器模式:

实现方式:类名中包含Wrapper,或者是Decorator,就是装饰器模式

实质:动态地给一个对象添加一些额外的职责,比生成子类更灵活

9、观察者模式

实现方式:spring的事件驱动模型使用的是观察者模式,常用的地方就是listener的实现

具体实现:事件机制的实现包括事件源、事件、事件监听器:

ApplicationEvent抽象类【事件】

ApplicationListener接口【事件监听器】

ApplicationContext接口【事件源】

10、策略模式

实现方式:spring框架的资源访问Resource接口,是具体资源访问策略的抽象,也是所有资源访问类所实现的接口

最新文章

  1. MySQL性能优化——索引
  2. vbox中虚拟ubuntu增加新的虚拟硬盘
  3. Maemo平台上如何使用Openvpn
  4. iPad开发--iPad中modal的更多用法
  5. 懒加载的用处和赋nil操作[iOS开发教程]
  6. win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
  7. Mysql备份迁移——MySqlBackup(.net)——(无法解决视图嵌视图报错)
  8. spring 下载地址
  9. 自定义ContentProvider的一些细节探究
  10. vs报算术运算溢出的错误
  11. Javascript水平提升
  12. 异步调用backgroudworker
  13. Cocos2d-x实现Android的Toast特征
  14. 201521123081《java程序设计》 第14周学习总结
  15. 如何导入css和js?
  16. JDK中的Timer和TimerTask详解
  17. OpenCV 透视变换实例
  18. iOS 图像处理(一):获取某一点位置的像素
  19. CentOS云厂商清单
  20. 推荐两个小工具MediaInfo 和 netpersec

热门文章

  1. js中如果遇到低版本安卓设备调用setTimeout不生效解决办法
  2. MyBatis XML配置properties
  3. pip 自己的源 搭建
  4. 【Android】安卓Q适配指南-相册
  5. XSStrike工具的安装使用
  6. MongoDB 添加用户名和密码
  7. EPEL添加与删除
  8. Upx 压缩go编译的程序 frp
  9. 纪中21日c组T1 1575. 二叉树
  10. PTA 邻接表存储图的广度优先遍历