购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.7.6 设计模块时逻辑设计与物理设计的失配

在设计师讨论模块之间的逻辑关系时,会使用下列描述:

● 模块A调用模块B。

● 模块A的接口是……

● 模块A向模块B发送数据。

● 模块A和模块B共享数据。

● 某个事件发生时,模块A通知模块B。

可是等到使用程序设计语言实现上述机制时,会发现:

● 没有“模块”这个实体,没办法做到模块A调用模块B,真正的实现是模块A的类X调用了模块B的类Y;要深入模块A和B的内部掌握各个类之间的调用关系,肯定会更复杂一些。

● 因为没有“模块”这个实体,所以也没有模块的接口,真正的实现是模块A的所有类的公开接口的结合。

● 没有“发送数据”这个机制,真正的实现要么是使用程序调用的参数,要么是定义专门的pipe和stream实现数据传输。pipe和stream可能非常复杂,甚至超过原系统本身,例如Kafaka、RabbitMQ等。

● 没有“共享数据”这个机制,真正的实现是模块A访问了一些数据结构,模块B也访问了一些数据结构,但模块A和B的访问在代码上是完全独立的,没有任何关系,它们都只是依赖于数据结构而已。

● 没有“通知”这个机制,它在实现上可能是程序调用、事件推送、数据传送、消息传输…… 9Fq618RprYfOPVqXiGudXtib+Aj/JfSSTg5Tp6X7qZZhH551LQC4Wotp9KyI4SQL

点击中间区域
呼出菜单
上一章
目录
下一章
×