工廠函數應該作爲靜態成員還是在命名空間中作爲自己的類?創建類工廠時,我必須使用兩個含義之間有什麼區別?工廠函數作爲類或命名空間中的靜態成員?
在我的情況下,工廠生成的類是具有不同內存結構支持的容器對象。像
template< typename T >
class Parent
{
virtual void myFunction() = 0;
// more virtual interface functions...
}
template< typename T >
class ChildA : public Parent<T>
{
virtual void myFunction() override;
}
template< typename T >
class ChildB : public Parent<T>
{
virtual void myFunction() override;
}
template< typename T >
Parent<T>* factory(PerformanceTraits traits);
東西,我看了看Namespace + functions versus static methods on a class和還讀什麼斯科特邁爾斯不得不對這個問題說,但我似乎並沒有能夠將其應用到工廠的功能。
如果我使用一個命名空間,我可以寫
Parent* obj = MyFactoryNamespace::factory<int>(traits);
相比
Parent* obj = MyFactoryClass<int>::factory(traits);
如果我使用一個模板工廠類。除此之外,有兩種方法可以寫出同樣的東西,技術上的差異是什麼?
謝謝。
我想你鏈接的問題已經很好的回答了。要記住的一件事就是測試:重新打開一個類比命名空間要困難得多。 – 2014-10-16 12:43:19