学习COM设计模式笔记
ref:
-
COM
产生的原因是在逻辑上可相互替换的模块间使用的接口无法统一, 导致如果需要使用继承进行实现模块的拓展会导致父类的过于虚拟, 造成代码重用的效率降低. -
NS3
中使用COM
设计模式的方法是在Object
类下定义一个Aggregation
的Vector
, 该向量的类型是Object
也就是说所有类型的对象都可以放置在该向量中, 然后通过模块间使用QueryInterface
的形式取回需要依赖的对象, 然后进行通信.该设计中,
Object
-
对比基于回调实现的
微服务架构
, 我认为由于微服务架构所涉及的业务逻辑较为单一, 接口高度一致. 所以使用了基于继承和IOC
的设计模式. 即使是中间件间的相互调用也是通过在IOC容器
中生成静态函数调用链的形式进行.相比而言
COM
设计给模块接口以及调用的自由度大大提升, 但是由于没有定义在外部的明确调用逻辑, 导致模块之间的调用较为混乱, 在没有阅读每个模块之前, 很难明确模块之间的调用顺序. 这对于较为复杂的系统会增加维护以及更新成本 -
总结: 对于某个需求设计代码架构的时候, 需要对该类需求进行尽可能特化的设计模式. 对于模块之间的关系, 应该尽可能的清晰, 以便后续的开发. 但是对于设计目的较广的系统, 可以使用类似
COM
的这种高自由度的架构, 但是对于这种架构需要留出充足的文档