Abschlussklassen in PHP, Java und anderen Sprachen

Abschlussklassen verwenden oder keine Abschlussklassen verwenden? Das ist hier die Frage. Und auch wann und wie man es richtig macht.







Warum Abschlussklassen verwenden?



Minimieren Sie das Sichtfeld



Wenn Sie eine Klasse mit einem endgültigen Präfix sehen, wissen Sie, dass diese Klasse nicht durch eine andere erweitert werden kann, wodurch sie nicht nur besser lesbar ist, sondern Sie auch sicher sein können, dass der Umfang der Logik auf diese bestimmte Klasse beschränkt ist.



Förderung eines Ansatzes zur Komposition über Vererbung 



Das Open / Closed-Prinzip besagt: Eine Klasse sollte für Erweiterungen offen, für Änderungen jedoch geschlossen sein.



Wenn Sie sich aus irgendeinem Grund (wenn Sie den Grund selbst gut verstehen) für die Verwendung der Vererbung entscheiden, entfernen Sie einfach das letzte Schlüsselwort und Sie sind fertig.



Wenn Sie die Klasse nicht „standardmäßig“ erweitern können (weil sie endgültig ist), helfen Sie sich selbst, indem Sie in erster Linie über die Verwendung von Komposition anstelle von Vererbung nachdenken.



Warum ist diese Klasse nicht endgültig?



Wenn wir auf Komposition und nicht auf Vererbung abzielen, sollten wir versuchen, Vererbung so weit wie möglich zu vermeiden und sie nur dann zu verwenden, wenn dies wirklich notwendig ist. OOP-Vererbung wird häufig missbraucht.



Wahnvorstellungen



Als wir OOP zum ersten Mal studierten, gaben wir ein klassisches Beispiel für Vererbung. Als Alan Kay Smalltalk schuf, war Vererbung jedoch nicht sein Hauptkonzept. Das Hauptkonzept war Messaging, dh Sie können Nachrichten an Objekte senden und diese kapseln Daten und Logik. Sie können ihr Verhalten mithilfe verschiedener Objekte ändern, bei denen es sich tatsächlich um Komposition handelt. Aber am Ende ist das Konzept der Vererbung so beliebt, dass es letztendlich die Komposition überschattet.



Vorteile der Verwendung von Abschlussklassen



  • . .
  • . , .
  • . , .
  • . , . .
  • . .
  • . , , .
  • . .




  • , , .
  • , , . , . , , .


[ ]



  • .
  • .
  • Verwenden Sie Komposition (über DI über den Klassenkonstruktor), um die Dinge zusammenzuhalten und die Komplexität zu minimieren.


Insgesamt: Schnittstellen -> Abschlussklassen -> Komposition



All Articles