1、控制反转IoC和依赖注入DI
控制反转:就是借用第三方Ioc容器实现具有依赖关系的对象之间的解耦,从而降低代码之间的耦合度。(IoC负责管理对象,你只管使用对象即可)。Spring IoC就像是一个工厂,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何创建的。
依赖注入:实现控制反转的一种设计模式,依赖注入就是将实例变量传入到一个对象中去。
2、工厂设计模式 参考
Spring的过程模式可以通过BeanFactory或ApplicationContext创建bean对象。两者的区别如下:
- BeanFactory:延迟注入,当时用到某个bean的时候才会注入。占用更少的内存,程序启动更快。
- ApplicationContext:容器启动的时候,不管有没有用到,一次性创建所有的bean。(常用)
3、单例设计模式 参考
在系统中某些对象只需要一个,就要使用到单例设计模式。如:线程池、缓存、对话框、注册表、日志对象等。
在Spring中bean的作用域默认就是单例的。
4、代理设计模式 参考
AOP:面向切面编程,能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(如:事务处理、日志管理、权限控制等)封装起来,一边减少系统中的重复代码,降低模块间的耦合度,提高了可扩展性和可维护性。
Spring AOP 是基于动态代理的。
5、模板方法
Spring中的jdbcTemplate、hibernateTemplate等一Template结尾的对数据库操作的类就是用到了模板方法模式。
6、适配器模式
Spring AOP中的增强或者通知使用到了适配器模式。
Spring MVC中使用到了适配器模式,HandlerAdapter。
7、装饰者模式
项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。使用装饰者模式就能够动态切换不同的数据源。