#oop #delphi #delphi-10.3-rio
#ооп #delphi #delphi-10.3-rio
Вопрос:
Я ищу способ создать a TSpeaker
, который может быть основан на TBose
class или может быть основан на TSonos
class . Возможно ли это вообще в Delphi сегодня? Какие механизмы я должен искать?
Комментарии:
1. Может быть, a
TSpeaker
может содержать aTTechnicalImplementation
сTBose
иTSonos
бытьTTechnicalImplementation
s ?2. Композиция — ваш друг в этом случае, как @AndreasRejbrand уже сделал для этого пример.
3. Мне кажется, ваше дерево наследования перевернуто. У вас должна быть база
TSpeaker
, которая имеет производныеTBoseSpeaker
иTSonosSpeaker
.4. Предки класса являются статическими, определяются и фиксируются во время компиляции. Итак, возможно ли то, о чем вы просите? Нет.
5. Или смотрите на поддержку интерфейса, например, ‘поддержка динамиков sonos и базового протокола’. Затем вы должны определить базовый класс TSpeaker и в зависимости от фактической реализации динамика (TSpeaker1 или TSpeaker2) добавить интерфейс ISonosSpeakerSupport и / или IBoseSpeakerSupport.