利用配置文件实现解耦

存在一个接口B
Interface B{
void m1();
}
有3个实现类B1、B2、B3
在A类方法中需要调用B类实现代码:
class A{
B b = new B3();
public static void main(String args[]){
b.m1();
}
}
此情况下,A中的代码就会跟B1耦合在一起,在需要切换实现方法时例如从B3转成B1是就要修改代码。违背了代码 修改关闭,对扩展开放的原则。而此时可以通过第三方的非代码配置文件完成B接口实现的切换。
class A{
B b;
public static void main(String args[]){
try {
Properties prop = new Properties();
InputStream inStream = DaoFactory.class.getClassLoader()
.getResourceAsStream("daoconfig.properties");
prop.load(inStream);
//从配置文件中读取UserDao的实现类全类名
String userDaoClass = prop.getProperty("B ");
Class userDaoImplClazz = Class.forName(userDaoClass);
//反射创建对象
b= (B) userDaoImplClazz.newInstance();
} catch (Throwable e) {
throw new ExceptionInInitializerError(e);
}
b.m1();
}
}
当然以上代码写得比较粗糙,但大家能通过这案例了解利用配置文件解耦的思路就行。
网友评论