我试图理解为什么单身人士不受欢迎。
假设我有单身 MyClass:
class MyClass
{
public:
void doSomething();
static MyClass* getInstance();
private:
int whatever;
static MyClass* myClass;
MyClass();
};
我有一个引用它的类:
void A::B()
{
...
MyClass::getInstance()->doSomething();
}
我读到的是,现在 A 类依赖于 MyClass。有效地测试 A 类意味着同时测试 MyClass。任何地方的任何人都可以同时修改我们的 MyClass,所以 A::B() 的结果是不可预测的。
但是为什么全球可访问性是造成这种情况的原因呢?如果我们有聚合呢?如果类 A 有一个指向我们的 MyClass 对象的指针或引用,而其他类也有指向同一个对象的指针或引用怎么办?
class A
{
public:
void B();
private:
MyClass* myClass;
};
void A::B()
{
...
myClass->doSomething();
}
难道你不能有同样的问题,其他一些类同时修改同一个 myClass 对象,因此 A::B() 依赖于它吗?我想问题是,在多个位置引用同一事物不是几乎像“全球状态”吗?
(我知道这个问题之前已经发布过,但我认为没有其他人专门询问过为什么多次引用同一个对象会更好。)