`
李宏喜
  • 浏览: 118673 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过消除重复逻辑,实现解耦

 
阅读更多
最近,碰到一个问题,在不同的模块间产生了强的依赖,导致模块A的数据执行完毕之后,在模块B,C无法找到模块A的数据,而模块B和C属于同一类型的业务数据,如下图所示:



当业务 A 调用 UNION_DATA_FLOW时,同时也会调用逻辑B和逻辑C,这时逻辑B和逻辑C对于业务A就是冗余逻辑
当业务B或C调用UNION_DATA_FLOW时,同时也会调用逻辑A,这时逻辑A相对于业务B和C就是冗余逻辑
这时,业务A和业务B、C之间就产生强依赖,并且容易导致业务A与业务B、C之间的数据丢失
可以看到union_data_flow所包含的逻辑A、B、C,分别有它们特有的实现目的,它们分别对业务A、B、C提供实现,根据逻辑的不同的实现目的,消除相对的重复逻辑,做到解耦! 最终解除业务A与业务B、C之间的强依赖。如下图所示:




unit_data_flow被拆分成unit_data_flow(A)和unit_data_flow(B、C)两部分
对与业务A和业务B、C,就不会有存在的冗余逻辑,而且产生的相对的重复逻辑,也将被消除,做到解耦! 避免了业务A的数据丢失!
感谢给予我灵感的人!

  • 大小: 18.4 KB
  • 大小: 23.6 KB
分享到:
评论

相关推荐

    快递行业IT架构解耦与微服务实践.pdf

    为此,我们需要采取措施消除这些耦合,例如通过数据库私有化和提供有限且通用的接口来保证SQL质量。 数据库的拆分是解耦的关键步骤,但并非易事。垂直切分和多实例策略可以缓解性能问题,但原有的数据库实例间的...

    基于双DSP FPGA的三相逆变器的设计与实现.pdf

    作者通过MATLAB进行了仿真,并在双DSP+FPGA的硬件构架中高效精确地实现了双闭环PI控制与重复控制相结合的控制方案。通过实验验证,加入了重复控制补偿后,三相逆变器的稳态性能得到了显著提高,能够使钠灯稳定工作。...

    springAOP详解

    而 AOP 可以通过声明式的方式减少甚至消除这种代码重复。 AOP 和 OOP 不是对立的,而是互补的关系。在现代软件开发中,两者通常结合使用,以实现更清晰的模块化设计。 **5.1.3 AOP 与 Java 的代理机制** Java ...

    SSM框架实现实时检查用户名是否已经注册以及注册按钮提交表单

    在本案例中,Spring管理着整个应用的bean,包括DAO、Service等,确保了各层之间的解耦。 2. **SpringMVC**:作为Spring框架的一部分,它是一个用于构建Web应用的模型-视图-控制器(MVC)架构。SpringMVC接收HTTP...

    消除微服务架构中的系统耦合.docx

    这样,SQL的拼装和数据访问的细节被封装在`user-service`中,对外部服务透明,实现了数据访问层的解耦。 然而,微服务架构并非没有问题。随着服务数量的增加,服务间的通信成为新的挑战。服务之间的调用关系变得...

    spring in action third 第三章重要内容

    接口导向让组件之间的交互基于接口而非具体实现,切面编程则允许我们定义跨越多个对象的行为,而模板和切面则帮助我们消除重复的代码,提高代码的可读性和效率。 总而言之,《Spring in Action 第三版》第三章的...

    C#连连看源码带自动完成算法

    每个PICTUREBOX代表一个可操作的游戏元素,通过设置其可见性、位置等属性,实现图案的显示和隐藏,以达到消除的效果。 游戏的核心部分是逻辑处理,包括初始化游戏板、判断相邻图案是否匹配、消除匹配图案以及检查...

    重构改善既有代码的设计

    1. **提高代码质量**:通过重构,可以减少代码冗余、消除重复逻辑、优化算法实现等,从而使代码变得更加高效。 2. **增强代码可读性**:重构有助于简化复杂的代码结构,使得其他开发者更容易阅读和理解代码。 3. **...

    pid 电机控制方面的资料

    - **6.3.1 基于DRNN神经网络参数自学习PID解耦控制原理**:利用DRNN网络动态调整PID参数,并实现解耦控制。 - **6.3.2 DRNN神经网络的Jacobian信息辨识**:通过DRNN网络辨识多变量系统的Jacobian矩阵。 - **6.3.3...

    spring in action Thrid 第二章重点内容

    同时,切面可以进一步消除代码中的重复部分,提高代码的重用性和一致性。 1.1.1章节中,作者强调了POJOs的力量,它们简单但功能强大。Spring通过**依赖注入**来组装这些POJOs,使它们能够相互协作而不紧密绑定。...

    Refactoring(200803061)

    - 逻辑解耦:将业务逻辑从视图和页面基类中提取到独立的服务层。 - 利用依赖注入(DI)和 inversion of control(IoC)容器,如Unity或Autofac,来管理对象的生命周期和依赖关系。 3. **VB.NET重构技巧**: - 将...

    mybatis应用

    2. **接口编程**:MyBatis 强调以接口的方式编程,这样可以更好地实现业务逻辑与数据访问层的解耦。通过定义接口并配置映射文件,可以实现 SQL 语句的动态绑定,提高代码的可维护性。 3. **数据的CRUD操作**:在 ...

    基于java后台SSH框架开发

    - 然后,Spring作为整个应用的中心,管理Struts的Action以及Hibernate的SessionFactory,提供依赖注入,实现业务逻辑组件的解耦。 - 接着,Hibernate用于将Java对象与数据库表进行映射,执行CRUD操作,简化数据访问...

    重构36计.docx

    通过提取函数、模板方法或继承来消除重复代码,遵循DRY(Don't Repeat Yourself)原则。 ### 增加注释 为关键部分添加注释,帮助其他开发者理解代码的意图和工作方式。 ### 函数体最多不超过100行 保持函数...

Global site tag (gtag.js) - Google Analytics