spring 利用工厂模式解耦

前期工作

  我们建立三层架构:表现层,业务层和持久层

   持久层通过dao接口完成对数据库的交互

   通过实现类完成功能的实现

  业务层通过service接口完成业务需求

   业务层实现类

  表现层调用service接口

   我们可以看到业务层对持久层,表现层对业务层有着依赖

利用工厂模式解耦

  我们创建一个Bean工厂,Bean在计算机英语里有可重用组件的意思,bean工厂就是创建dao和service对象的工厂

   配置文件可以是xml,也可以是properties,这里我们采用properties,我们在resources里创建properties配置

   然后我们在bean工厂里面初始化properties,这里我们使用静态代码块

   需要注意的是InputSteam的实例化不能用new关键字,因为web服务上线后就没有src文件夹了,也不能用绝对路径,因为每台机子都不一样。这里采用的是利用bean工厂的类加载器的getResourceAsStream方法获取流对象,里面的路径是从classpath开始的。

   然后我们来写getBean方法,该方法可以通过bean的名称获取bean对象,这里根据beanName和properties的key-value配置获取beanPath也就是全限定类名,再通过class.forName反射的机制获取bean对象。

   建立好工厂之后,我们就可以利用工厂解耦,我们来看表现层对accountService的依赖,我们就可以利用工厂生产IAccountServiceImpl类的实现类AccountServiceImpl

   同样的,业务层对持久层的依赖也可以通过工厂模式解耦

   我们运行一下,奈斯~

   

 

原文地址:https://www.cnblogs.com/qq2210446939/p/13683455.html