我在为一组课程设计一个好的设计时遇到了麻烦,并希望有人可以给我一些关于最佳实践的指导。我保持了类和成员函数的通用性,以使问题更简单。
基本上,我有三个类(让我们称之为A,B和C),如下所示:
class A
{
public:
...
int GetX( void ) const { return x; };
int GetY( void ) const { return y; };
private:
B b; // NOTE: A "has-a" B
int x;
int y;
};
class B
{
public:
...
void SetZ( int value ) { z = value };
private:
int z;
C c; // NOTE: B "has-a" C
};
class C
{
public:
...
void DoSomething(int x, int y){ ... };
void DoSomethingElse( int z ){ ... };
};
我的问题如下:
正如你所看到的,由于所有课程都需要彼此的信息,所以有点混乱!我可以使用任何设计模式吗?任何想法都会非常感激....
答案 0 :(得分:1)
不幸的是,正如你提出的那样,这是一个完全混乱。
class C
中的方法定义为private
,因此,只能在该类的其他方法中调用(除非您要添加friend
声明并制作依赖性甚至更糟)。
我还认为您最好不要使用 这些通用名称 来粘贴代码,因为它可以帮助我们理解问题的域并提出一些好的架构建议。
请记住,许多优秀的应用程序架构方法已经发明并且您实际上不必重新发明它们,您应该只学习它们并使用它们他们。
答案 1 :(得分:1)
您遗漏了许多可能会改变此建议有效性的细节,但根据您显示的接口子集,看起来B应该有A或者可能从A派生,反之亦然。