我想使用一个大量使用单例的库,但实际上我需要一些管理器类来拥有多个实例。代码是开源的,但是自己更改代码会使lib更新到更新的版本。
有什么技巧可以强制创建单例甚至整个库的新实例?
答案 0 :(得分:3)
找出谁首先写了这个图书馆,访问他们的家庭住址并将他们打成血腥的纸浆,最好是一本关于软件设计的书。 :)
除此之外:将您对原始库的更改作为补丁集保留,以便您(或多或少)可以轻松地将其应用于每个新版本。此外,尝试将更改添加到库中,这样您就不必自己维护修补程序。 ;)
答案 1 :(得分:2)
在windows下,您可以将每个实例封装在不同的DLL中。
答案 2 :(得分:1)
请记住,库也取决于单身人士的单身性质。如果要更新库,则需要验证更改是否违反库功能。这只能每次手动完成。
答案 3 :(得分:1)
答案是“它取决于”。一个很好的例子是Microsofts C运行时使用的C ++堆。当然,这是作为单身实现的。现在,当您将CRT静态链接到多个DLL时,最终会出现多个副本。较新的实现具有单个堆,而较旧的CRT在链接的每个库中创建一个堆。