我有類,如下面問題上類相互作用
class A
{
private:
B b;
}
class B
{
private:
C c;
D d;
}
C和d是存儲類主要包含結構和數據結構。 B將它們包裝在一起。我想知道如果我有一個對象A,獲取數據C和D或者執行一個函數的更好方法是什麼?
For example:
class A
{
private:
B b;
public:
B* GetB() { return &b;}
};
class B
{
private:
C c;
D d;
public:
C* GetC() {return &c;}
D* GetD() {return &d;}
};
class C
{
public:
functionA();
};
A a;
B* b = a.GetB();
C* c = b->GetC();
c->functionA();
OR
我不應該暴露在所有對象B:
class A
{
private:
B b;
public:
C* GetC() { return &b.GetC();}
D* GetD() { return &b.GetD();}
};
A a;
C* c = a.GetC();
c->functionA();
OR
我不應該暴露對象B,C和d
class A
{
private:
B b;
public:
void performFunctionA() { b.performFunctionA(); }
};
class B
{
private:
C c;
D d;
public:
void performFunctionA() { c.functionA();}
};
class C
{
public:
functionA();
};
A a;
a.performFunctionA();
爲什麼我們選擇一個諾特爾?
謝謝
感謝您的答覆。如果我使用最後一個選項,如果c有10個函數,並且我需要訪問它們,那麼在類B和類A中,我需要在這兩個類中添加10個接口。這不是一點點重複嗎? – leslieg 2011-06-10 03:13:37