脚本宝典收集整理的这篇文章主要介绍了学习COM设计模式笔记,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
ref: component Object Model Wiki, NS3 ArchITecture Ref
COM
产生的原因是在逻辑上可相互替换的模块间使用的接口无法统一, 导致如果需要使用继承进行实现模块的拓展会导致父类的过于虚拟, 造成代码重用的效率降低.
NS3
中使用COM
设计模式的方法是在Object
类下定义一个Aggregation
的Vector
, 该向量的类型是Object
也就是说所有类型的对象都可以放置在该向量中, 然后通过模块间使用QueryInterface
的形式取回需要依赖的对象, 然后进行通信.
该设计中, Object
对象拥有了一个无筛选的容器控件, 用于放置需要捆绑在一起的模块对象, 通过模块之间隐性的相互调用达成建立模块系统的目的
对比基于回调实现的微服务架构
, 我认为由于微服务架构所涉及的业务逻辑较为单一, 接口高度一致. 所以使用了基于继承和IOC
的设计模式. 即使是中间件间的相互调用也是通过在IOC容器
中生成静态函数调用链的形式进行.
相比而言COM
设计给模块接口以及调用的自由度大大提升, 但是由于没有定义在外部的明确调用逻辑, 导致模块之间的调用较为混乱, 在没有阅读每个模块之前, 很难明确模块之间的调用顺序. 这对于较为复杂的系统会增加维护以及更新成本
总结: 对于某个需求设计代码架构的时候, 需要对该类需求进行尽可能特化的设计模式. 对于模块之间的关系, 应该尽可能的清晰, 以便后续的开发. 但是对于设计目的较广的系统, 可以使用类似COM
的这种高自由度的架构, 但是对于这种架构需要留出充足的文档
对于新项目的上手, 一个很重要的知识积累就是项目的常见设计模式. 积累常见的设计模式可以快速地对于代码设计进行分类, 在阅读代码时可以对尚未阅读地部分进行预测.
以上是脚本宝典为你收集整理的学习COM设计模式笔记全部内容,希望文章能够帮你解决学习COM设计模式笔记所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。