社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
使用工厂模式解耦。
某一层功能需要改动,但其他层代码不变
实现类1:MyDaoImpl
查询自己的数据库.
====改为====>
实现类2:MyDaoImpl2
从其它地址得到数据.
BeanFactory
类,Bean工厂service层:
private MyDao dao = BeanFactory.getBean();
class BeanFactory{
public static Object getBean(){
Class clazz = Class.forName("com.mysite.dao.impl.MyDaoImpl");//有硬编码问题
Object obj =clazz,newInstance();
return obj;
}
}
提供一个配置文件:beans.properties
内容:myDao=com.mysite.dao.impl.MyDaoImpl2
//解决硬编码问题,进一步解耦
service层
private MyDao dao = BeanFactory.getBean("myDao");
class BeanFactory{
public static Object getBean(String key){
//读取beans.properties文件,得到Properties properties;
Properties properties = BeanFactory.class.
String clazzName = properties.getProperty(key);
Class clazz = Class.forName(clazzName);
Object obj = clazz.newInstance();
}
}
dao的全限定类名
dao
,就提供一个key,通过BeanFactory
类得到key对应的dao
对象.dao
再拓展,又增加了新的实现类.我们只需要修改配置文件即可.BeanFactory
代码都不需要变更.Spring框架的两大核心
IoC
:Inversion of Control,控制反转,解耦AOP
: Aspect Oriented Programming,面向切面编程如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!