架构设计之充分解耦的实现

业务功能性

模块,组件,类,三种层次的定义

系统设计的关键所在

  1. 可扩展
  2. 解耦
  3. 高并发
  4. 高性能
  5. 横向扩容
  6. 高可用

其中1-2为了解决复杂业务,3-6为了解决业务增长问题

耦合

耦合
上图就是一种耦合,模块A的代码内方法直接去访问模块B中的一个方法。关于这种调用我们也可以称为具象调用
引入一个概念:越抽象越趋于稳定,越具象越趋于紊乱。

解耦实现

1.面向接口编程

接口
  接口是常用的解耦方式也可以称为抽象调用,只要接口稳定,实现代码随意改动不影响调方代码。
  但是这种方式有一个致命改动就是接口变动。如上图IA接口变动所有调用IA的地方均需改动。当然可以利用适配器设计模式来加强接口稳定性。
  缺陷:接口稳定性难以保证,接口一旦变动,相关业务逻辑代码均需要修改。

2.消息编程

  假设A模块要调用B模块的功能,但是又不去调B的任何函数,甚至模块可以直接摘掉,也不影响系统运行,仅仅是缺少了这部分功能而已。
就像火车一样,摘下来一节车厢装上去一节车厢,火车都可以正常运行。
消息解耦
  如上图所示,A要去调B的功能具体实现步骤如下,此过程仅仅说明了单次调用,没有进行返回参数的回写。(原理相同,在进行一次领域模型写入,与消息传递即可)

  1. A模块先将传入参数保存到领域模型内
  2. 将调用消息上载到消息中心
  3. 消息中心将消息调用推到B模块
  4. B模块去获取领域模型,至此完成参数传递及调用

猜你喜欢

转载自blog.csdn.net/m0_38125278/article/details/85993939