Мне трудно придумать хороший дизайн для группы классов, и я надеялся, что кто-нибудь может дать мне несколько советов по передовому опыту.Я сохранил общие классы и функции-члены, чтобы упростить задачу.
По сути, у меня есть три класса (давайте назовем их 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 ){ ... };
};
Моя проблема заключается в следующем:
- Класс A много использует внутренние переменные-члены "x" и "y".
- Класс B много использует внутреннюю переменную-член "z".
- Класс B должен вызывать C :: DoSomething (), а C :: DoSomething () - значения X и Y в классе A, передаваемые в качестве аргументов.
- C ::DoSomethingElse () вызывается, скажем, из другого класса (например, D), но он должен вызывать SetZ () в классе B!.
Как видите, это немного беспорядок, так как всеклассы нуждаются в информации друг от друга!Есть ли какие-то шаблоны дизайна, которые я могу использовать?Любые идеи будут высоко оценены ....