当前位置: 首页 > 科技观察

熟悉Spring源码再写?你知道它使用了哪些设计模式吗?

时间:2023-03-18 14:50:39 科技观察

Spring作为业界的经典框架,无论是架构设计还是代码编写,都堪称业界典范。好了,废话不多说,下面开始今天的内容。Spring中常用的设计模式有九种。模板方法(TemplateMethod)spring的jdbc模板,非常佩服Spring源码的精妙之处,极其经典。Spring真的是设计模式的集合,而且用的非常熟练。模板方法(templatemethod)在spring中被广泛使用,比如:jdbcTemplate、hibernateTemplate、JndiTemplate以及一些周边的包无疑都使用了模板模式,但是spring并不是简单的使用模板方法,而是在此基础上进行了创新,使用与回调(callback)一起使用,使用起来极其灵活。所谓模板方法就是在父类中定义算法的主要流程,将一些个性化的步骤延迟到子类中去实现。父类始终控制着整个过程的主动权,子类只是辅助父类实现一些可定制的步骤。所谓回调就是在方法参数中传递一个接口。父类调用该方法时,必须调用该方法传入的接口的实现类。下面是一个具体的例子,JdbcTemplate中的execute方法。以上只是SpringJdbcTemplte实现的基本原理。SpringJdbcTemplate在里面做了更多的事情,比如将所有的基础操作都封装到了JdbcOperations接口中,使用JdbcAccessor来管理DataSource和转换异常。策略(Strategy)策略模式是对算法的封装,将使用算法的责任与算法本身分离,委托给不同的对象管理。策略模式通常将一系列算法包装成一系列策略类,作为抽象策略类的子类。Strategy模式在spring中实例化对象时使用。SimpleInstantiationStrategy中的以下代码说明了策略模式的用法。简单工厂也称为静态工厂方法(StaticFactoryMethod)模式,但不属于GOF23种设计模式之一。简单工厂模式的本质是一个工厂类根据传入的参数动态决定创建哪个产品类。spring中的BeanFactory就是简单工厂模式的体现。bean对象是通过传入唯一标识获得的,但是是在传入参数之后创建还是在传入参数之前创建,要视具体情况而定。下面的配置是在HelloItxxz类中创建一个itxxzBean。工厂方法(FactoryMethod)通常应用程序直接使用new来创建新的对象。为了分离对象的创建和使用,采用了工厂模式,即应用程序将对象创建和初始化的责任交给工厂对象。通常,应用程序有自己的工厂对象来创建bean。如果把应用自身的工厂对象交给Spring管理,那么Spring管理的就不是普通的bean,而是工厂bean。下面以工厂方法中的静态方法为例进行说明。importjava.util.随机;创建一个config.xm配置文件,并纳入到Spring容器中进行管理。您需要通过工厂方法指定静态方法名称。测试: