我正在進行一個項目,我來到以下命名問題。如果我在不同的命名空間上擁有相同的類名,我應該怎麼做?
我想實現工廠模式,但我不知道最好的類namings使用(我從一個到另一個變化,這是相當耗時:S)。
我通常去命名空間分隔組類,但我問題是這個特定的一段代碼:
class Mesh
{
...
};
namespace Factory
{
class Mesh
{
...
};
}
...
Factory::Mesh meshFactory;
Mesh *mesh = meshFactory.create(...);
我問題是,如果我用這個結構,我可以混合Mesh類(不管是工廠類還是實際的Mesh類)。實際上,這是一種簡化,我的問題涉及更多的命名空間,並且在兩個命名空間中都使用具有相同名稱的類。
我在想,也許上使用後綴來分隔類和把它們放在同一個命名空間,例如:
class Mesh
{
...
};
class MeshFactory
{
...
};
MeshFactory meshFactory;
Mesh *mesh = meshFactory.create(...);
所以這是什麼各班做不會產生混淆。
我不喜歡簡單的解決方案是使用不同的命名空間和發明不同的名字,因爲我使用的命名空間名稱不區分他們結束了:
class Mesh
{
...
};
namespace Factory
{
class MeshFactory // I can't figure a better different name
{
...
};
}
我更喜歡第二個選項。
是否有一個堅實的理由是更好的第一選擇?還是有另一種方式?最佳實踐對此有何評論?