| 

.NET C# Java Javascript Exception

1
Im Roten Grad der Clean Code Developer Link wird "Favour composition over inheritance" gefordert.
Das Liskov Substitution Prinzip ist mir bekannt.
Hat jemand Lust mir das Prinzip "Favour composition over inheritance" anhand eines Beispiels mit kurzer Erklärung zu verdeutlichen? (in c# wäre Klasse)
News:
08.09.2009
Mammal 195 2 6
3 Antworten
3
Mit C# kann ich nicht dienen. Aber mit einem Beispiel. Du könntest beispielsweise eine Queue implementieren und willst als Datenstruktur dahinter eine Liste benutzen. Du könntest also von einer Liste erben und damit deren Funktionalität benutzen und die Queue-Funktionalität hinzufügen. Oder Du nimmst ein privates Feld in Deiner Queue-Klasse, dass die Liste beinhaltet.

Was sind die Vorteile? Nun, bei der Vererbungsvariante kann man auch über Listen-Methoden auf die Daten zugreifen. Das ist mölglicherweise gar nicht intendiert. Außerdem würde die API inkompatibel werden, wenn man sich umentscheidet und als Datenstruktur dahinter etwas anderes nehmen will. Mit dem privaten Feld wird das verborgen.
08.09.2009
Mnementh 201 1 1 4
Mnementh 201 1 1 4
1
Schliesse mich Mnementh an und ergänze Beispielcode:

class Tester
{
class MyList extends ArrayList
{
public void MyDelAll(){ /* some code */ }
}
class MyList2
{
private ArrayList _internal = new ArrayList();
public void MyDelAll(){ /* some code */ }
}

void Test()
{
MyList ml = new MyList();
ml.Add("Das hier geht.");

MyList2 ml2 = new MyList2();
ml.Add("Das hier geht NICHT!!!11elf");
}
}
08.09.2009
DaSpors 4,2k 2 8

Stelle deine .net-Frage jetzt!