Вглубь, вширь или как?
От: pva  
Дата: 10.09.07 13:20
Оценка:
Привет,

имеется подсистема, предоставляющая некоторый общий интерфейс. Возникла проблема роста и классификации новых подсистем.
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) Развернуть зависимость и вынести подсистемы на уровень выше
Свой вариант?
newbie
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.