1 工厂模式
BeanFactory ,bean工厂
使用过spring框架的人应该都知道,容器里的对象都不是new出来的,可以自己写bean 单独注入,也可以写好包路径去扫描带注解的的方式来注入,更古老的还有读取配置文件注入的。这也正是Spring IOC 的体现,IOC翻译是控制反转,控制反转指的是建立对象的权利去交给容器来建立,因此大家使用spring 的时候就不会再new对象了,类上写上注解,等使用的时候再用@Autowired找容器要就可以了。 (题外话:那为什么要这样干呢?答案是为了解耦,不用spring之前你写逻辑,可能是在A对象的方法里,new了B对象,然后调用了B对象的方法,后面可能还有C,D,EF,调用的一团糟,可读性和可维护性就很差,哪怕代码分层写了,B类就是专门做数据库查询的一个类,因为是个被其他人调而自己不掉别人的一个工具类,所以弄成单例最好,可还有一个C表专门管数据库插入,也需要做成单例,那这单例的代码是不是每次都要写一堆,懒汉饿汉的好几行,可是你用了spring 的bean工厂 后 ,可以都装在单例工厂里单例代码就不用写了。单例由容器管理,使用时找容器要。咳咳,就好比你想谈恋爱时,直接找国家,国家包分配。试想一下这对整个社会来说是不是更好管理,减少了很多冲突,减少了很多隐性的矛盾。当然这是不可能的,伦理问题不能想的太简单,国家就算有资源分配也不能保证分配质量是均匀的,分配不均就会造成新的矛盾,可能矛盾变得更大了呢,不满的人可能会赖上容器,进而打破这个容器。但spring 可以保证啊,spring 给分配的对象除了地址不同外剩下的都相同,单例的话连地址都是相同的,相当于对象被公用了 )
2 单例模式
ApplicationContext , IOC容器单例bean
3 代理模式
AopProxy ,切面编程
4 装饰器模式
BreanWrapper , 访问bean的属性和方法
5 策略模式
SimplelnstantiationStrategy ,Bean的实例化策略
6 适配器模式
HandlerApdapter ,SpringMVC中执行handler
7 观察者模式
ApplicationListener ,事件监听
8 模板方法模式
JdbcTemplate ,操作数据库模板 ,AQS(抽象队列同步器),用来解决代码的重复问题