Spring框架是Java企业级应用开发中使用频率非常高的一个开发框架,也是Java开源项目中最受大家关注的项目之一。通过阅读Spring的源码,了解Spring的核心实现原理,深入理解Spring框架的设计思想,对我们后续的编码开发有非常大的指导作用。接下来我来分享一下在阅读源码过程中,结合GOF设计模式,梳理了一下Spring框架中使用到的一些设计模式,并且了解是如何运用的。
1、Factory模式
工厂模式是最常用的设计模式之一,其中包括简单工厂模式、抽象工厂模式。实现意图是定义一个用于创建对象的接口,由子类来决定实例化哪个类。
标准的工厂模型的UML类图如下:
回到Spring框架中来,Spring的IOC容器的实现,就是一个大的工厂模式的实现。BeanFactory工厂管理着Spring容器里面所有的Bean的实例,包含了Bean的实例化、状态变更、销毁过程的整个生命周期。
BeanFactory工厂模型的UML类图:
2、Builder模式
Builder模式的设计思想是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
Builder模式的UML类图:
Director:定义复杂对象的构建过程,调用Builder抽象类的各个构建接口,完成产品对象的构建。
Builder:抽象类,定义各种对象Build需要的接口。
ConcreteBuilder:抽象类的子类,实现Builder定义的各个接口,完成产品的构建。
在Spring的IOC容器启动过程,实际上就是利用Builder模式来实现最终context对象的构建过程。简单梳理一下Spring容器启动的过程:
说明:Spring容器的启动过程,实际上就是Bean的实例化过程。在整个过程中,
AbstractApplicationContext就是充当了Builder模式中的Director的角色,分别操作不同的Builder来实现不同类型Bean的实例化与注册过程。
未完待续。。。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!