0
我想创建不公开任何底层实现的类。甚至没有一个指向实现的指针。
我会用全局对象池做到这一点。
就是这样。
一个类TestImpl类中实现的测试。
当构造Test时,它会在全局对象池中为自己创建一个TestImpl。
对象池基本上是每种类型的地图。关键将是Test实例的内存地址,并且该值将是相应的TestImpl。所以每次调用Test的成员函数时,它都会首先从对象池中获取相应的TestImpl,并使用该指针作为关键字。
这种对象池当然必须是同步的,需要锁。
您认为这样的解决方案会产生多大的性能?
表现为* *什么?您已经清楚地表明您可能会在“对象池”上发生锁定争用。如你在这里所描述的那样执行,并假设一个相当丰富的多线程环境(你没有在你的文章中指定),它看起来像是一种高概率机制,它可以压制任何并行的希望。所以编码并找出答案。 – WhozCraig 2014-10-01 10:33:26
如果您想完全隐藏实现,那么您只能在头文件中提供纯虚拟接口并提供工厂来检索实现。 – Galik 2014-10-01 10:43:41
性能影响取决于调用次数与每次调用所花费的时间(如往常一样),以及池的大小和实现。 – 2014-10-01 10:46:24