Привет,
имеется подсистема, предоставляющая некоторый общий интерфейс. Возникла проблема роста и классификации новых подсистем.
class IPublicApi {
public:
virtual IModule1& Module1() = 0;
virtual IModule2& Module2() = 0;
...
};
class IModule1 {
virtual IModule11& Module11() = 0;
...
};
...
Где-то на втором уровне образовался класс, примерно такого вида
class IUserProfile
: public IErrorHandler
{
Q_OBJECT
public:
virtual const UserSid& getMe() = 0;
virtual void setMe(const UserSid&) = 0;
/* Profile. */
virtual void getUserProfile(const UserSid&) = 0;
virtual void setUserProfile(const QString&) = 0;
...
/* Statistics. */
...
/* Shopping. */
...
signals:
void sigUserProfile(const UserSid, const QString);
...
};
В классе получается много подсистем с парой функций на каждую. Соответсвенно, беспокоит подобный рост в плане красивости дизайна.
Как возможные варианты:
1) Оставить все как есть — пусть растет себе
2) Разнести по интерфейсам и сделать наследование
3) Разнести по интерфейсам и агрегировать
4) Развернуть зависимость и вынести подсистемы на уровень выше
Свой вариант?