解耦

2019-08-10  本文已影响0人  衣忌破

利用配置文件实现解耦

image.png

存在一个接口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();
  }
}

当然以上代码写得比较粗糙,但大家能通过这案例了解利用配置文件解耦的思路就行。

上一篇 下一篇

猜你喜欢

热点阅读