【发布时间】:2015-04-24 01:12:26
【问题描述】:
我想就如何改进我的整体程序设计获得一些建议。
我有一个主类,它有两个经常需要相互交互的成员。这个类似容器的类有一个 Initialize() 函数,用于初始化这两个成员,以及提供对外部世界的访问的其他函数:
class Foo {
public:
bool InitializeAandB();
void UseFoo();
private:
TypeA a;
TypeB b;
};
在调用UseFoo() 之后的某个时刻,a 将需要调用b 的公共函数之一。所以,假设 TypeA 有一个这样的成员函数:
void TypeA::Function() {
if (true) {
TypeB *bpointer;
bpointer->Interact(); // Need pointer to b here.
}
}
TypeA 和TypeB 是独立的实体,不能组合成一个类。碰巧这些独立的实体需要在不同的时间相互交互。
我不想公开a 和b,因为它们不应该从外界看到。将TypeA 和TypeB 添加为Foo 中的朋友似乎是一个hacky 修复。也不理想,因为TypeA 和TypeB 需要了解Foo,而他们只需要了解彼此。公共 GetA() 和 GetB() 访问器函数也是如此。
第三种选择是将TypeB* 成员添加到TypeA,并将TypeA* 成员添加到TypeB,它们是在InitializeAandB() 期间设置的。但这在某种程度上似乎是多余的,就像我缺少更好的整体设计一样。
有没有更好的设计方法?
【问题讨论】:
-
查看“朋友”关键字。
标签: c++ design-patterns