Rumah >Java >javaTutorial >Pemfaktoran semula - Gantikan Singleton

Pemfaktoran semula - Gantikan Singleton

Barbara Streisand
Barbara Streisandasal
2024-11-26 09:23:09965semak imbas

Melepaskan Diri dari Singleton Jahat

TL;DR: Refactor singletons untuk mengurangkan gandingan

Masalah Diatasi

  • Gandingan tinggi
  • Sukar diuji
  • Isu berbilang benang

Bau Kod Berkaitan

Refactoring  - Replace Singleton

Bau Kod 32 - Singleton

Maxi Contieri ・ 23 Nov '20

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

Bau Kod 22 - Pembantu

Maxi Contieri ・ 12 Nov '20

#oop #pembantu #codenewbie #pemula
Refactoring  - Replace Singleton

Bau Kod 25 - Penyalahguna Corak

Maxi Contieri ・ 15 Nov '20

#oop #tutorial #pengaturcaraan #corak

Langkah

  1. Kenal pasti singleton
  2. Cari semua rujukan kepada kaedah getInstance()nya
  3. Faktor semula singleton ke kelas standard
  4. Suntikan ia sebagai pergantungan

Kod Contoh

Sebelum ini

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(); 
    }
}

Selepas

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();

taip

[X] Separa Automatik

Keselamatan

Pemfaktoran semula ini selamat apabila anda mengemas kini semua rujukan kepada singleton dan mengendalikan kebergantungannya dengan betul.

Menguji setiap langkah memastikan tiada rujukan kepada singleton terlepas.

Mengapa kod itu lebih baik?

Memfaktorkan semula daripada singleton menjadikan kod lebih modular, boleh diuji dan kurang terdedah kepada isu yang disebabkan oleh keadaan global.

Menyuntik kebergantungan membolehkan anda menggantikan DatabaseConnection dengan mudah dengan pelaksanaan olok-olok atau berbeza dalam ujian dan konteks lain.

Tag

  • Gandingan

Pemfaktoran Semula Berkaitan

Refactoring  - Replace Singleton

Pemfaktoran Semula 007 - Kelas Ekstrak

Maxi Contieri ・ 4 Jul '22

#webdev #pemula #javascript #tutorial

Lihat juga

Refactoring  - Replace Singleton

Singleton: Punca Segala Kejahatan

Maxi Contieri ・ 17 Nov '20

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

Gandingan: Satu-satunya masalah reka bentuk perisian

Maxi Contieri ・ 6 Feb '21

#webdev #pengaturcaraan #oop #tutorial

Kredit

Imej oleh PublicDomainPictures daripada Pixabay


Artikel ini adalah sebahagian daripada Siri Pemfaktoran Semula.

Refactoring  - Replace Singleton

Cara Meningkatkan Kod anda Dengan Pemfaktoran Semula yang mudah

Maxi Contieri ・ 24 Okt '22

#webdev #pemula #pengaturcaraan #tutorial

Atas ialah kandungan terperinci Pemfaktoran semula - Gantikan Singleton. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn