c++ 为什么AbstractFactoryUnit具有动态多态性而不是静态多态性?

wydwbb8l  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(148)

我正在学习现代c++,目前专注于抽象工厂,据我所知,Loki的主要思想之一是避免GoF中使用的“虚拟”(动态多态性)。但有时它仍然被使用。在关于抽象工厂的一章中,AbstractFactoryUnit有“virtual”。http://loki-lib.cvs.sourceforge.net/loki-lib/loki/include/loki/AbstractFactory.h?view=markup从我读到目前为止,有办法绕过去。http://en.wikipedia.org/wiki/Template_metaprogramming#Static_polymorphism
为什么在这种情况下使用虚拟更有效?

jpfvwuh4

jpfvwuh41#

由于Loki的目标看起来主要是教育性的,我想说静态多态性可能只是为了清楚起见而被避免了。当教授像抽象工厂这样的设计模式时,类之间的关系是最重要的方面。在这个上下文中,多态性是如何实现的似乎是一个次要的、与实现相关的问题。
诚然,静态多态可能更有效,但它会降低代码的可读性。
您可能会争辩说,如果您要频繁地创建大对象,那么使用静态多态性会有好处。这是非常正确的,但我认为洛基不应该被用在这种情况下。它的主要目的是教学。
看看Boost.Factory的源代码,可能会有帮助。事实上,我宁愿从Boost源代码学习现代C++;诚然,据说Loki为Boost奠定了基础,但请记住,Boost已经获得了更多的使用,因此审查和批评的方式更多。

相关问题