Was wäre das beste Entwurfsmuster für dieses Problem:
Ich habe ein Objekt A. Objekt A kann abhängig von der Benutzeranforderung entweder registriert oder aus der Datenbank gelöscht werden.
Die Datenvalidierung erfolgt vor der Registrierung oder Löschung des Objekts. Es gibt eine Reihe von Regeln, die überprüft werden müssen, bevor das Objekt registriert werden kann, und eine andere Reihe von Regeln zum Löschen. Einige dieser Regeln gelten für beide Operationen.
Bis jetzt denke ich, dass das Entwurfsmuster der Verantwortungskette am besten passt, aber ich habe Probleme, es umzusetzen.
design-patterns
melodui
quelle
quelle
Antworten:
Normalerweise benutze ich eine separate Validator-Klasse, um jeden Anwendungsfall zu validieren. ZB bevor ich ein Produkt zur Datenbank hinzufüge, verwende ich AddProductValidator, um die Geschäftsregel zu validieren, bevor ich ein Produkt lösche, verwende ich DeleteProductValidator, um die Geschäftsregel zu validieren
Um die Validator-Klasse zu strukturieren, verfolge ich den folgenden Ansatz: http://lostechies.com/jimmybogard/2007/10/24/entity-validation-with-visitors-and-extension-methods/
Wenn Sie .NET verwenden, sollten Sie möglicherweise Fluent Validation ( https://github.com/JeremySkinner/FluentValidation ) in Betracht ziehen . Ich finde es ziemlich cool und ziemlich nah an dem Artikel, den ich oben erwähnt habe
quelle
Wie beschrieben würde ich wahrscheinlich einen Optionstyp implementieren . Auf diese Weise könnte ich ein "None" oder einen validierten Wert (möglicherweise träge) zurückgeben, aber das ist ein Implementierungsdetail und führt zu der Idee, einen Decorator zu verwenden .
Wenn die Benutzeroberfläche hässlich wird, würde ich natürlich eine Fassade verwenden .
quelle