使用工厂模式解耦。
某一层功能需要改动,但其他层代码不变
实现类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,面向切面编程
如对本文有疑问, 点击进行留言回复!!
荐 厉害了!阿里P8架构师用4大技术文档带你深入解读爆火的中台战略
FlowableException: Error initialising dmn data model报错问题
网友评论