分层模型应该是一个古老又有效的代码组织结构了。但是代码在实际书写中往往分层不随如人意,一些功能到底在哪一层往往不能分明。另外各层次之间是不是不能跨越中间层,如果不能,将会导致多余的中间代码,而这个代码的目的仅仅是维持代码模块之间的层次关系。对于桌面程序,这样分层的结果就是将模块组织成了一个树形结构,而下层的树叶部分往往要需要其他树叶或者树干部分的支持,如果是MFC,方法则往往是调用全局对象从树根逐层查找,这样代码也必然是啰嗦低效的。
用消息发布订阅模型,系统维持一个消息集散中心board,其他各个模块都向这个board发送消息,并注册自己,订阅消息,这样各个模块只直接和board打交道,模块之间完全结构,传统的分层模型被以board为中心的星型模型取代。简化的程序复杂,降低模块之间的耦合,更利于阅读维护。