Ich habe ungefähr 8 Jahre lang codiert, aber ich finde immer noch, dass die Vererbung zu flexibel ist und Sie manchmal völlig verwirrt mit dem Code ist, den Sie geschrieben haben. Ein einfachstes Beispiel wäre:
abstract class AClass {
protected void method1() {
if(check()) {
do1();
} else {
do2();
}
}
protected abstract void do1();
protected abstract void do2();
}
Die Absicht der Klasse ist, dass die Leute do1 () und do2 () implementieren können, so dass eine weitere Logik ausgeführt werden kann. Manchmal entscheiden sich die Leute jedoch, method1 () zu überladen, und dann werden die Dinge sofort kompliziert.
Ich finde nur im Strategiemuster, dass Code durch Vererbung gut wiederverwendet wird. In den meisten Fällen kennt der Designer der Basisklasse seine Unterklassen sehr gut, und diese Vererbung ist völlig optional.
Ich habe eine Klasse, die von 4 Klassen geerbt wurde - einen IoHandler, und es gibt Unterklassen für Server-, Client-, Edgeserver- und Ursprungsserver, und sie macht mich verrückt. Ich war immer im Code-Refactoring, ich kam immer mit Ideen heraus, von denen ich denke, dass sie funktionieren würden, und wurde dann nicht bewiesen. Es wird gesagt, dass das menschliche Gehirn nur 7 Informationen gleichzeitig speichern kann. Trage ich zu viele?
final
[wenn Sie Java verwenden]. Dies macht es effektiv nicht virtuell und es kann nicht überladen werden. Perfekt für den Einsatz unter diesen Umständen [Vorlagenmuster]