解耦

作者: 衣忌破 | 来源:发表于2019-08-10 22:43 被阅读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();
      }
    }
    

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

    相关文章

      网友评论

          本文标题:解耦

          本文链接:https://www.haomeiwen.com/subject/eomdjctx.html