Ich habe 2 Klassen A und B, die beide die Eigenschaften X und Y haben; aber Klasse B hat auch eine andere Eigenschaft, Z. Klassen A und B sind völlig unabhängig von einander, sie teilen nur Eigenschaften X und Y.Entwurfsmuster: Vererbung oder Zusammensetzung
Inheritance
class A
{
public int X;
public int Y;
}
class B : A
{
public int Z;
}
Klasse B haben keine " ist-eine "Beziehung zu Klasse A, so bricht es Vererbungsprinzipale ist OOP.
Zusammensetzung
class A
{
public int X;
public int Y;
}
class B
{
public A ObjA;
public int Z;
}
Klasse B hat keine "hat-eine" Beziehung zur Klasse A, so dass es Zusammensetzung Prinzipien bricht, ist OOP.
Ohne doppelten Code, sollte ich Vererbung oder Zusammensetzung verwenden (obwohl sie die Prinzipien von OOP brechen) oder gibt es ein anderes Entwurfsmuster? Ich persönlich denke, dass die Verwendung der Vererbung wegen der Lesbarkeit das kleinere der Übel sein wird.
* Wie würde ich das erreichen? *: Was erreichen? Ich kann nicht verstehen, was du verlangst. BTW, in Ihrem zweiten Beispiel, B ** hat ** eine hat-eine Beziehung mit A. –
@ JBNizet Ich habe die Frage behoben, um es ein wenig klarer zu machen. Sag mir, wenn das hilft –
Ehrlich gesagt, nein, tut es nicht. Wenn ich richtig verstehe, hat B keine has-a-Beziehung, daher sollte composition nicht verwendet werden, und es hat auch keine is-a-Assoziation mit A, daher sollte Vererbung nicht verwendet werden. Ist das richtig? Dann, nun, benutze keine von denen. Machen Sie B völlig unabhängig von A. Nur weil ein Auto Räder hat und eine Maus auch hat, bedeutet das nicht, dass sie verwandt sein sollten. Vielleicht könnten Sie, wenn Sie ein konkretes Beispiel mit echten Klassen geben, mehr Hilfe anbieten. –