Wenn ich eine Elternklasse oder Schnittstelle und 2 Kindklassen habe, die vom Elternteil erben oder die Schnittstelle implementieren, habe ich gemeinsame Eigenschaften im Elternteil, aber es gibt einige Eigenschaften in jedem Kind. Sollte ich alle Eigenschaften in der Elternklasse/Schnittstelle sammeln oder trennen?Eigenschaften der Elternklasse
abstract class Customer
{
string name { get; set; }
}
class GoldCustomer : Customer
{
string Address { get; set;}
}
class SilverCustomer : Customer
{
string Telephone { get; set;}
}
Wenn ich sich dann trennen und einen Verweis von der Mutter erstellen, um das Kind zeigt dann kann es dem Kind nicht Eigenschaften getrennt zugreifen
Customer c = new GoldCustomer();
c.Address // error
Welche richtige Architektur und nicht jedes Design zu verletzen Muster?
abstract class Customer
{
string name { get; set; }
string Address { get; set;}
string Telephone { get; set;}
}
class GoldCustomer : Customer
{
}
class SilverCustomer : Customer
{
}
Customer c = new GoldCustomer();
c.Address = "";
Es hängt von den genauen Umständen ab. Entwerfen Sie Ihre Klassen so, dass Sie nicht gegen das Liskov-Substitutionsprinzip verstoßen müssen (https://en.wikipedia.org/wiki/Liskov_substitution_principle). Wenn Sie das schwierig finden, denken Sie an die Zusammensetzung statt an die Vererbung (https: // en .wikipedia.org/wiki/Composition_over_inheritance) – itsme86
Diese Frage ist zu weit gefasst und wie es heißt, kommt es auf bestimmte Umstände an. Beide Vorgehensweisen könnten korrekt sein, es hängt nur davon ab, was Sie tun möchten. Versuchen Sie einfach vorher zu überlegen, was Sie wirklich brauchen, damit Sie keine unnötigen Abhängigkeiten machen. – CrudaLilium