1. 工厂模式
工厂模式通俗的来讲就是根据传入参数的不同去生产不同的类的模式,生产出来的类有着共同的父类,工厂本身也能看做是一个类
- BeanFactory
- FactoryBean
2. 单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- Spring依赖注入Bean实例默认是单例的。双重判断加锁 实现。
- Spring的依赖注入(包括lazy-init方式)都是发生在getBean里。getBean的doGetBean方法调用getSingleton进行bean的创建。
3. 适配器模式
适配器模式,根据不同的规则去由适配器去选择不同的处理方法
- HanderAdapter
- DispatcherServlet 根据HandlerMapping返回的handler,向HandlerAdatper发起请求,处理Handler。HandlerAdapter根据规则找到对应的Handler并让其执行,执行完毕后Handler会向HandlerAdapter返回一个ModelAndView,最后由HandlerAdapter向DispatchServelet返回一个ModelAndView。
4. 装饰器模式
5. 代理模式
动态代理:在内存中构建的,不需要手动编写代理类
静态代理:需要手工编写代理类,代理类引用被代理对象。
- Spring AOP就是动态代理模式的一种实现,切面在应用运行的时刻被织入。一般情况下,在织入切面时,AOP容器会为目标对象创建动态的创建一个代理对象。SpringAOP就是以这种方式织入切面的。
6. 观察者模式
观察者模式(Observer Pattern):(发布订阅模式)定义对象间的一种一对多依赖天系,使得每一个对象的状态发生改变时,其相关依赖对象皆得到通知并被自动更新
- spring的事件驱动模型使用的是 观察者模式 ,Spring中Observer模式常用的地方是listener的实现。
事件机制的实现需要三个部分,事件源,事件,事件监听器
7. 策略模式
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式让算法独立于使用它的客户而变化。
- Spring框架的资源访问Resource接口 。该接口提供了更强的资源访问能力,Spring 框架本身大量使用了 Resource 接口来访问底层资源。针对不同的底层资源,Spring 将会提供不同的 Resource 实现类,不同的实现类负责不同的资源访问逻辑。
- UrlResource: 访问网络资源的实现类。
ClassPathResource:访问类加载路径里资源的实现类。
FileSystemResource:访问文件系统里资源的实现类。
InputStreamResource:访问输入流资源的实现类。
ByteArrayResource:访问字节数组资源的实现类。