OO提倡尽量少用全局变量, 我们需要另辟方法来使用全局变量.
以OO的思维方式, 程序中应该尽量少用全局变量, 因为如果出现大量的全局变量, 而程序中又有许多地方使用它, 势必会造成程序逻辑混乱, 容易出差错. 全局变量的最本质的特性就是在程序运行期间只有一个实例, 程序的其它部分可以任意访问, 这与单件模式的应用场合不谋而和. 单件模式可以确保在程序的运行期间只存在一个类的固定个实例(通常是单个, 这也是单件模式名称的由来). 所以我们完全可以用单件类中的成员变量来代替全局变量, 如果我们把性质相同的全局变量归入同一个单件类中, 在程序中就不会出现大量的全局变量. 如原先需要设计如下的全局变量 :
int iVar;
float fVar;
double dVar;
long lVar;
用单件类代替它们, 程序代码可以如下 :
class CGlobalVar
{
private :
static CGlobalVar* _instance;
int m_iVar;
float m_fVar;
double m_dVar;
long m_lVar;
private :
CGlobalVar(); // 构造函数私有化, 外界不能直接创建这个类的实例
{
_instance = NULL;
m_iVar = 0;
m_fVar = 0.0f;
m_dVar = 0.0;
m_lVar = 0L;
}
public :
static CGlobalVar* CreateInstance()
{
if(_instance == null)
{
_instance = new CGlobalVar();
}
return _instance;
}
int GetIVar() const { return m_iVar; }
void SetIVar(int iVar) { m_iVar = iVar);
// 其它Get/Set对
}
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=353233
|
- 评论人:cdpc0202
2007-08-08 11:20:14
|
|||
应该是static变量没初始化,你自己初始化不就好了。
|
||||
|
- 评论人:bigboy
2006-12-28 00:10:31
|
|||
你可以运行一下你的程序,看有什么结果。这会出现这样一个错误:Linking...
|
||||