Ist mit einer allgegenwärtigen Basis eines Anti-Muster-Objekt?
-
22-08-2019 - |
Frage
Ich erinnere mich an eine Debatte über diese irgendwo zu sehen, und bin derzeit erwägen, ein Basisobjekt zu entfernen, die jedes Business-Objekt in einem System arbeite ich an, von erbt. Es enthält ein paar Eigenschaften, einige Datenbanklogik, und einige Konstruktor Logik.
Ist das ein Anti-Muster, oder ist die Jury noch heraus? Wäre es besser, einen Basisvertrag zu haben, von erben, die eine bestimmte Menge an Textcodierung erfordern würde in jedem Objekt zu tun?
Bearbeiten : Ich mag dsimcha tun und fühle es sehr gut zu diesem Thema widerspiegelt, bin ich immer noch gerne weitere Antworten hören
Lösung
Die Standard-Faustregel Vererbung verwenden nur Flexibilität für die Benutzer einer Klasse durch Polymorphismus bereitzustellen und Zusammensetzung verwenden, wenn Sie Code aus anderen Klassen wiederverwenden möchten. Allerdings, solange Sie nicht die Liskov Substitutionsprinzip zu verletzen es ist wahrscheinlich nicht so schlimm. Schreiben Tonnen Textvorschlag ist von Natur aus eine schlechte Sache, auch, weil sie die Teile des Codes verschleiert, wo die eigentliche Handlung geschieht und ist anti-DRY. Wenn Sie das Liskov Substitutionsprinzip verletzen, aber dann absolut das ist keine gute Idee.
Andere Tipps
Ich möchte auch, welche Probleme verstehe ich auftreten können, oder sollten sich bewusst von
sein
Ein mögliches Problem ist, wenn Sie Mehrfachvererbung verwenden: Ihre Unterklasse erbt zwei Instanzen der ‚Eve‘ Klassen ... weshalb C ++ unterstützt so genannte virtuelle Vererbung
. Es ist ein häufig verwendetes Idiom: zum Beispiel in .Net alles von System.Object
leitet ... und / oder alle COM-Objekte die IQueryInterface Schnittstelle implementieren
Im Moment ist ein Anti-Muster in einem Vakuum. Ist Ihr ‚Eve Klasse‘ verursachen Sie Probleme? Welche Vorteile erwarten Sie von zu entfernen, sie zu verwirklichen? Zu fragen, ob es auf einige Standardliste der Anti-Patterns nur hilft, wenn es hilft bei der Identifizierung tatsächliche Ausgaben.