我有類配置:在類之間交換變量的正確方法是什麼?
class Config
{
public:
Config();
~Config();
void Read();
CData var; //CData - some config structure
};
什麼是從其他類訪問該值的正確方法?有幾個選項:
- 使其全球
- 轉移參考其他類
- 您變種
在我的系統,config.var.some
需要在類的90%。
我有類配置:在類之間交換變量的正確方法是什麼?
class Config
{
public:
Config();
~Config();
void Read();
CData var; //CData - some config structure
};
什麼是從其他類訪問該值的正確方法?有幾個選項:
在我的系統,config.var.some
需要在類的90%。
3)你可以使用靜態,這基本上就像它是全局的。
class Config
{
public:
static CData var; //CData - some config structure
static CData Read();
};
//these in a cpp file
CData Config::var = Config::Read();
int main() {
std::cout << Config.var.something;
}
但在這種情況下,它可能是最好的只是爲了讓自己var
全球。
第三種方式:在Config
類中添加存取函數。
class Config
{
public:
Config();
~Config();
void Read();
int getNumberOfFooBars() const { return var.foo_bars; }
private:
CData var; //CData - some config structure
};
我通常會傳遞一個像這樣的對象作爲參考,而不是懶惰並使其成爲全局對象。如果你傳遞了這個對象,那麼通過查看構造函數/成員初始值設定項列表就可以明確哪些類將使用該對象。相反,使它成爲全局的(作爲單身或其他)會讓你或其他人很難看出哪些類需要一目瞭然。
將配件函數添加到配置類中,允許其他對象通過定義的接口訪問其成員。這將允許您在不破壞與配置類接口的代碼的情況下更改類的內部。
[可以將哪些設計模式應用於配置設置問題?](http://stackoverflow.com/questions/1314730/which-design-patterns-can-be-applied-to-the-configuration -settings-problem) – Johnsyweb 2012-04-24 23:16:01