У меня есть 3-х классов, A
, B
и C
где B
является A
и C
является A
.Multiple реализация дизайн наследования
Эти классы предназначены для сохранения истории, поэтому A
предоставляет виртуальный метод, который производные классы могут создавать для уведомления, когда история должна быть заархивирована, называется void archive()
.
Теперь неожиданно необходимо получить информацию от A
, B
и C
в одном классе, и я не уверен в лучшем подходе.
Я думал о создании нового класса D
, который наследуется от B
и C
, и изменения их наследования virtual public A
, чтобы избежать diamond problem и есть D::archive()
просто позвонить B::archive()
и C::archive()
.
Это хороший подход? Или мне нужно переделать 4 класса, чтобы я не использовал множественное наследование?
«Теперь внезапно возникает необходимость иметь информацию из A, B и C в одном классе» - это корень зла. Что именно вы пытаетесь достичь? –
Информация в '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' Но, конечно, через пару лет, у кого-то появилась «крутая» идея в голове, и интерфейс не работает, поэтому я пытаюсь найти лучший способ изменить это. – steveo225
Трудно рассуждать об этом абстрактно. В целом вы можете рассматривать композицию как альтернативу наследованию, но это зависит от специфики. MI может быть хорошим, когда это уместно. –