Effektives Java Kapitel 2
Kapitel 2. Objekte erstellen und löschen
1. Ziehen Sie in Betracht, eine statische Factory-Methode anstelle eines Konstruktors zu erstellen
2. Verwenden Sie den Builder, wenn die Konstruktorargumente sehr groß sind
- Vergleichen Sie den Teleskopkonstruktor mit dem JavaBeans-Muster.
- Wenn bei der Instanziierung die Anzahl der Parameter größer als die Einhandzählung ist, ist es besser, die Instanziierung mit dem Builder-Muster zu berücksichtigen.
- Ich habe die Erklärung der Nachteile der Verwendung des JavaBeans-Musters nicht verstanden. Es scheint, dass Inkonsistenzen auftreten können, weil es mehrere Anrufe gibt, aber was genau meinen Sie?
3. Machen Sie beim Entwerfen einer Singleton-Klasse den Konstruktor privat oder verwenden Sie ENUM.
- Ich habe noch nie eine Tonne mit dem Typ ENUM gesehen. ..
4. Erstellen Sie einen privaten Konstruktor für die Klasse, die Sie die Instanziierung unterdrücken möchten
- Utility-Klasse usw. möchte die Instanzgenerierung unterdrücken, daher scheint sie zu diesem Zeitpunkt verwendet zu werden.
5. Die Abhängigkeitsinjektion sollte anstelle einer harten Codierung der Ressourcen erfolgen
- Im großen Maßstab sollten Sie den DI-Mechanismus des Frameworks verwenden.
- Verwenden Sie das Factory-Muster.
- Dieser Artikel scheint nicht in der 2. Auflage zu sein.
6. Vermeiden Sie unnötige Objekterstellung
- Es sei denn, eine defensive Kopie ist erforderlich. Was ist eine defensive Kopie?
7. Verwerfen Sie nicht mehr verwendete Referenzen
- Wenn nicht verworfen, tritt ein Speicherverlust auf.
- Es scheint ein häufiges Problem bei Klassen zu sein, die Caches und Rückrufe haben.
- Schwache Referenz? → Das Folgende ist leicht zu verstehen. Schwache Referenzen unterliegen der GC, wenn keine Referenzen mehr vorhanden sind (Referenzen außer schwachen Referenzen).
http://www.ne.jp/asahi/hishidama/home/tech/java/weak.html
8. Vermeiden Sie die Verwendung von Finalizer und Reiniger
- Der Nachteil von diesen ist, dass es schwierig ist vorherzusagen, wie sie funktionieren werden.
- Der Finalizer hat schwerwiegende negative Auswirkungen auf die Leistung.
- Die Verwendung von Finalizer wirkt sich negativ auf die Sicherheit aus. Ich bin unten im Detail gefahren, aber ehrlich gesagt verstehe ich das nicht. ..
https://www.ibm.com/developerworks/jp/java/library/j-fv/index.html
- Anstatt diese zu verwenden, verwenden wir die AutoClosable-Implementierung und versuchen es mit Ressourcen.
9. Verwenden Sie Try-with-Resources anstatt Try-finally
- Wenn try-finally gleichzeitig eine Ausnahme in der try-Klausel und der finally-Klausel auslöst, wird die try-Klausel übertönt.