解耦

作者: 衣忌破 | 来源:发表于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();
  }
}

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

相关文章

  • 解耦

    解耦 对于大型重构, 最有效的手段就是 解耦, 解耦的目的使实现代码高聚合、松耦合。 解耦为何如此...

  • 20171127-03问题整理

    总摘要: 解耦. 接口降低. 架构. 2017-11-27摘要: 解耦. 接口降低. 架构. 1.为什么说解耦的...

  • 解耦

    今天小董给大家做了一个关于DMTP的精彩演讲,DMTP种种优秀的特性令我们这些听众叹为观止。 为何DMTP具有如此...

  • 解耦

    利用配置文件实现解耦 存在一个接口B 有3个实现类B1、B2、B3 在A类方法中需要调用B类实现代码: 此情况下,...

  • DDD 中的事件总线 (一)

    DDD 为什么需要event bus? 简单的说就是 解耦 ,无论是本地聚合间的解耦,还是微服务间的解耦. 没有e...

  • AFNetworking源码之AFAutoPurgingImag

    AFAutoPurgingImageCache图片缓存 通过2个protocol解耦,通过协议继承来解耦。协议相当...

  • iOS三方框架之 - AFNetworking的Https认证流

    对AFNetworking进行解耦AFNetworking解耦后可以分为以下几个模块:1. NSURLSessio...

  • 消息队列和RabbitMQ及AMQP协议介绍

    转自:二月_春风 文章地址 为什么要使用消息队列 异步处理 系统解耦解耦是消息中间队列解决的最本质问题。所谓解耦,...

  • 【5分钟背八股】说说你对aop的理解?

    AOP全称叫做 Aspect Oriented Programming 面向切面编程。它是为解耦而生的,解耦是程...

  • 2022-05-01代码重构 -- 大小规模重构

    大规模高层次重构 解耦代码 “解耦”为何如此重要? 过于复杂的代码往往在可读性、可维护性上都不友好。解耦保证代码松...

网友评论

      本文标题:解耦

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