Ich wollte nur die Gruppen Gedanken über den Umgang mit Konfigurationsdetails von Entitäten bekommen.Einstellungen auf App-Ebene in DDD?
Was ich speziell denke, ist High-Level-Einstellungen, die admin-geändert werden können. die Art von Dingen, die Sie letztlich in der App oder web.config speichern, aber von der DDD-Perspektive sollte irgendwo in den Objekten explizit festgelegt werden.
Als Argumentation nehmen wir als Beispiel eine webbasierte CMS- oder Blog-App.
Eine bestimmte Blog-Eintrag Entität hat eine beliebige Anzahl von Instanzeinstellungen wie Autor, Inhalt, usw.
Aber Sie könnten auch (zum Beispiel) Standard Beschreibung oder Schlüsselwörter festlegen möchten, dass alle Einträge in der Website beginnen sollte mit wenn sie nicht vom Autor geändert werden. Sicher, Sie könnten nur diese Konstanten in der Klasse erstellen, aber der Websitebesitzer konnte die Standardwerte nicht ändern.
So sind meine Gedanken wie folgt:
1) verwenden Klasse-Ebene (statisch) Eigenschaften, diese Einstellungen repräsentieren, und sie dann festgelegt, wenn die App startet, können sie bei der Deutschen Bahn oder von der Web-Einstellung .config.
oder
2) verwenden, um eine separate Einheit für die Einstellungen zu halten, möglicherweise ein Wörterbuch, entweder direkt verwenden oder ein Mitglied der Eintragsklasse seiner
Was Sie alle als die leicht schlägt/flexibel? Meine Bedenken über die erste ist, dass es mich nicht als sehr einbaufähig empfindet (wenn ich am Ende mehr Funktionen hinzufügen möchte), da ich die App durch die Änderung der Klassenmethoden einer Entität ändern würde (was sich wie eine OCP-Verletzung anfühlt)). Der zweite fühlt sich jedoch schwerer an, besonders wenn ich dann Werte aus einem Wörterbuch werfen oder analysieren muss.
Standardwerte waren ein Beispiel, vielleicht ein schlechter; Ich kenne das Factory-Muster. Ein anderes Beispiel wäre etwas, das für alle Instanzen einer Klasse gelten sollte, sich aber auf der App-Ebene ändern kann. Vielleicht etwas wie die Anzahl der Instanzen, die in eine Liste geladen werden (immer) oder eine Regel darüber, ob Kommentare angezeigt werden oder nicht. Diese treffen mich nicht wirklich als Werte auf Instanzebene, oder verstehe ich etwas falsch? – Paul
Sie könnten immer einen oder mehrere verwandte Werte in einen Typ einkapseln und dann eine Instanz dieses Typs in alle Consumers einfügen. Aus Gründen der Effizienz (oder aus anderen Gründen) können Sie eine einzelne, gemeinsam genutzte Instanz injizieren, während die Konsumenten keine Vorstellung von der Lebensdauer des injizierten Objekts haben. Das hält deine Optionen offen. –