我需要就泛化与多态作出一个决定。
情景如下:我想让我的单olithic互相依赖的代码更加模块化,干净和可扩展。 目前这个阶段改变设计原则是可行的,而且在我看来也非常值得。
我是否应该引入纯虚基类(接口)或者模板呢?
我了解模板选项的基础知识:少一些间接性,性能更好,编译速度更快; 但是没有后期绑定等等。
STL并没有太多(或者根本没有)使用继承,Boost也是如此。但是我认为它们旨在成为程序员每两行代码就使用一次的非常基本的工具。
我认为继承和晚期绑定的方法更适用于插件式的大型代码片段和功能,这些功能应该在部署之后甚至在运行时进行交换、更新等。
我的情景有点介于两者之间。
我不需要在运行时动态交换代码,编译时可以。通常它也是一个非常核心和频繁使用的功能,在逻辑上不能分成大块。
这让我倾向于使用模板解决方案。对我来说,它看起来也更加清晰。
是否存在任何重大的不良影响?接口是否仍然是最佳选择?它们什么时候不是?哪一个更符合标准的C++风格?
我知道这有点主观,但我真的很想听听经验。我没有Scott Meyers的effective C++,所以我寄希望于你们:)