Bei der Durchsicht von SO stieß ich auf eine Frage zu Handhabung mehrerer Nachrichtentypen . Mein Anliegen ist - wie lade ich eine solche Nachricht auf eine saubere Art und Weise? Ich beschloss, eine separate Klasse mit einer Methode zu haben, die eine Nachricht jedes Mal lädt, wenn sie aufgerufen wird. Diese Methode sollte eine neue Instanz eines konkreten Nachrichtentyps (z.B. AlphaMessage, BetaMessage, GammaMessage, etc.) erzeugen und diese als Nachricht zurückgeben.
class MessageLoader
{
public Message Load()
{
// ...
}
}
Der Code innerhalb der Methode ist etwas, das wirklich schrecklich für mich aussieht, und ich würde sehr gerne refactor it/get rid of it:
Message msg = Message.Load(...); // load yourself from whatever source
if (msg.Type == MessageType.Alpha) return new AlphaMessage(msg);
if (msg.Type == MessageType.Beta) return new BetaMessage(msg);
// ...
Wenn das ganze Design zu chaotisch aussieht und ihr eine bessere Lösung habt, bin ich bereit, die ganze Sache umzustrukturieren.
Wenn meine Beschreibung zu chaotisch ist, lassen Sie mich bitte wissen, was darin fehlt, und ich werde die Frage überarbeiten. Ich danke Ihnen allen.
Editar: Was mir an diesem Code nicht gefällt, ist, dass ich eine Instanz einer Nachricht erstellen muss (weil sie weiß, wie sie sich selbst lädt) und sie dann mit einem konkreten Nachrichtentyp dekorieren muss (weil Dekoratoren wissen, wie sie die Eigenschaft Data von msg interpretieren können). Vielleicht wird die Frage dadurch etwas klarer.