Design, C++: Klassenhierarchie wo verschiedene Funktionalität eingemischt wird



  • Hallo,

    eine grunsätzliche Design-orientierte Frage:

    Ich habe eine Art Observer-Pattern, bei denen Nachrichten an Observer rumgereicht werden.
    Also an oberster stelle einer Klassenhierarchie steht zB class Message.
    Die Observer arbeiten mit Message*.
    Konkrete Messages sind hiervon abgeleitet und werden über eine ID identifiziert, mithelfe derer man auf die konkrete Message casten kann um dann weiterzuarbeiten.

    Es gibt jetzt Mengen von Klassen die weitere Funktioniltät zur Verfügung stellen.
    Nenne wir die Funktionalitäten A, B, ...
    Der aktuelle (nicht von mir entwickelte) Code hat eine tiefe Hierarchie, so in der Art:
    MessageMitA : public Message
    MessageMitAundB : public MessageMitA
    usw.

    Nun sind die zusätzlichen Funktionalität im Prinzip völlig unabhängig von dem Message-Mechanismus und auch untereinander.

    Ist es dann sinnvoller eine konkrete Message so abzuleiten:
    class MessageMitA : public Message, public A
    class MessageMitAundB : public Message, public A, public B

    wobei die Klassen A, B jeweils nur den strikt nötigen Code zu ihrer Funktionalität bereitstellen.

    Falls das einen Namen hat, wie nennt man dieses Pattern. Ich dachte zuerst an Mix-Ins, aber die sind explizit nicht über Ableitung definiert.
    wäre sowas in C++ gebräuchlich?


Anmelden zum Antworten