Heim > Java > javaLernprogramm > Refactoring – Singleton ersetzen

Refactoring – Singleton ersetzen

Barbara Streisand
Freigeben: 2024-11-26 09:23:09
Original
1017 Leute haben es durchsucht

Befreiung vom bösen Singleton

TL;DR: Singletons umgestalten, um die Kopplung zu reduzieren

Behandelte Probleme

  • Hohe Kopplung
  • Schwierige Testbarkeit
  • Multithreading-Probleme

Verwandte Code-Smells

Refactoring  - Replace Singleton

Code Smell 32 – Singletons

Maxi Contieri ・ 23. November 2020

#codenewbie #tutorial #webdev #Programmierung
Refactoring  - Replace Singleton

Code Smell 22 – Helfer

Maxi Contieri ・ 12. November 2020

#oop #Helfer #codenewbie #Anfänger
Refactoring  - Replace Singleton

Code Smell 25 – Mustermissbraucher

Maxi Contieri ・ 15. November 2020

#oop #tutorial #Programmierung #Muster

Schritte

  1. Identifizieren Sie den Singleton
  2. Suchen Sie alle Verweise auf die Methode getInstance()
  3. Refaktorieren Sie den Singleton in eine Standardklasse
  4. Fügen Sie es als Abhängigkeit ein

Beispielcode

Vor

public class DatabaseConnection {
    private static DatabaseConnection instance;

    private DatabaseConnection() {}

    public static DatabaseConnection getInstance() {
        if (instance == null) {
            instance = new DatabaseConnection();
        }
        return instance;
    }

    public void connect() { 
    }
}

public class Service {
    public void performTask() {
        DatabaseConnection connection = DatabaseConnection.getInstance();
        connection.connect(); 
    }
}
Nach dem Login kopieren

Nach

public class DatabaseConnection {  
    // 1. Identify the singleton 
    public void connect() { 
    }
}

public class Service {
    // 2. Locate all references to its getInstance() method.
    private DatabaseConnection connection;

    // 3. Refactor the singleton to a standard class. 
    public Service(DatabaseConnection connection) {
        // 4. Inject it as a dependency.
        this.connection = connection;
    }

    public void performTask() {
        connection.connect(); 
    }
}

DatabaseConnection connection = new DatabaseConnection();
// You can also mock the connection in your tests

Service service = new Service(connection);
service.performTask();
Nach dem Login kopieren

Typ

[X] Halbautomatisch

Sicherheit

Dieses Refactoring ist sicher, wenn Sie alle Verweise auf den Singleton aktualisieren und seine Abhängigkeiten korrekt behandeln.

Durch das Testen jedes Schritts wird sichergestellt, dass keine Verweise auf den Singleton übersehen werden.

Warum ist der Code besser?

Durch die Umgestaltung weg von einem Singleton wird der Code modularer, testbarer und weniger anfällig für Probleme, die durch den globalen Zustand verursacht werden.

Durch das Einfügen von Abhängigkeiten können Sie DatabaseConnection in Test- und anderen Kontexten problemlos durch eine Schein- oder andere Implementierung ersetzen.

Schlagworte

  • Kopplung

Verwandte Refactorings

Refactoring  - Replace Singleton

Refactoring 007 – Klasse extrahieren

Maxi Contieri ・ 4. Juli '22

#webdev #Anfänger #javascript #tutorial

Siehe auch

Refactoring  - Replace Singleton

Singleton: Die Wurzel allen Übels

Maxi Contieri ・ 17. November 2020

#oop #tutorial #codenewbie #Programmierung
Refactoring  - Replace Singleton

Kopplung: Das einzige Problem beim Softwaredesign

Maxi Contieri ・ 6. Februar 21

#webdev #Programmierung #oop #tutorial

Credits

Bild von PublicDomainPictures von Pixabay


Dieser Artikel ist Teil der Refactoring-Reihe.

Refactoring  - Replace Singleton

So verbessern Sie Ihren Code mit einfachen Refactorings

Maxi Contieri ・ 24. Okt. 22

#webdev #Anfänger #Programmierung #tutorial

Das obige ist der detaillierte Inhalt vonRefactoring – Singleton ersetzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage