0
我想重構一些代碼。目前該代碼遵循如下模式:使用堆分配而不是工廠方法的堆分配
function f() {
Transaction trans;
// Do Operation
trans.commit();
}
這裏的事務是具體的類。我想將它移動到Interface並使此代碼如下所示:
function f() {
ITransaction* trans = GetTransaction();
// Do Operation
trans->commit();
}
// Factory
ITransaction* GetTransaction()
{
return new Transaction();
}
問題:我們開始在工廠方法中使用new,現在使堆分配。我想避免這種堆分配,並仍然設法使用接口。 有什麼辦法可以做到這一點?
感謝, 凱拉斯
自定義分配器應該可以解決大部分,如果並非所有的性能問題。我也建議使用'std :: unique_ptr',這樣你的例子不會泄漏。 – StoryTeller
「我想避免這樣的堆分配」 - 堆分配的哪個方面困擾着你? –
如果事務類型的數量是固定的,請查看* variant *類型,例如'提振:: variant'。 – juanchopanza