J'écris un moteur MUD et je viens juste de commencer sur le modèle objet de jeu, qui doit être extensible.Conseils avec Hiérarchie des classes des articles de jeu
je besoin d'aide principalement parce que je l'ai fait se sent en désordre, mais je ne peux pas penser à une autre solution qui fonctionne mieux.
J'ai une classe appelée MudObject
, et une autre classe appelée Container
, un conteneur peut contenir plusieurs MudObjects
, mais est un MudObject
lui-même, cependant MudObject
s doivent savoir ce qu'ils sont contenus dans.
Alors ils regardent quelque chose comme ceci:
public abstract class MudObject
{
Container containedBy;
}
public abstract class Container : MudObject
{
List<MudObject> Contains;
}
(s'il vous plaît noter que ce sont par exemple juste et des qualificatifs et des modificateurs d'accès, les propriétés et telles sont manquées au large)
Maintenant tout cela en soi semble désordonné, mais permet d'ajouter quelque chose d'autre au mélange:
Item
est un MudObject
que tous les éléments visuels (comme les armes) seront héritées de, mais certains d'entre eux ont besoin d'être conteneurs aussi (comme des coffres). Mais theres pas comme l'héritage multiple dans C#, Donc, il revient à des interfaces, le meilleur choix serait de faire du conteneur une interface (pour autant que je puisse voir) Cependant, il y avait une raison pour laquelle je ne voulais pas être, à savoir que l'ajout d'un MudObject
à un récipient provoque le récipient pour mettre à jour la valeur de MudObject
.containedBy
.
Toutes les idées qui rendraient ce travail, ou suis-je tomber dans le piège de faire des choses trop compliquées?
Si oui, que pourriez-vous suggérer d'autre?
Notez mon point sur les liaisons; plutôt que d'avoir le coffre * être * un conteneur, pensez à laisser le coffre avoir une propriété (comme des objets) qui est le conteneur ... –
Voir ma propre réponse :) – Sekhat