> Java > java지도 시간 > 리팩토링 - 싱글톤 교체

리팩토링 - 싱글톤 교체

Barbara Streisand
풀어 주다: 2024-11-26 09:23:09
원래의
1002명이 탐색했습니다.

악한 싱글턴에서 벗어나기

TL;DR: 결합을 줄이기 위해 싱글톤을 리팩터링

해결된 문제

  • 고결합도
  • 어려운 테스트 가능성
  • 멀티스레딩 문제

관련 코드 냄새

Refactoring  - Replace Singleton

코드 냄새 32 - 싱글톤

맥시 콘티에리 ・ 2020년 11월 23일

#코드뉴비 #지도 시간 #웹개발 #프로그램 작성
Refactoring  - Replace Singleton

코드 스멜 22 - 도우미

맥시 콘티에리 ・ 2020년 11월 12일

#앗 #도우미 #코드뉴비 #초보자
Refactoring  - Replace Singleton

코드 냄새 25 - 패턴 어뷰저

맥시 콘티에리 ・ 2020년 11월 15일

#앗 #지도 시간 #프로그램 작성 #패턴

단계

  1. 싱글톤 식별
  2. getInstance() 메소드
  3. 에 대한 모든 참조를 찾습니다.
  4. 싱글톤을 표준 클래스로 리팩터링
  5. 종속성으로 삽입

샘플 코드

전에

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(); 
    }
}
로그인 후 복사

후에

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();
로그인 후 복사

유형

[X] 반자동

안전

이 리팩토링은 싱글톤에 대한 모든 참조를 업데이트하고 해당 종속성을 올바르게 처리할 때 안전합니다.

각 단계를 테스트하여 싱글톤에 대한 참조가 누락되지 않았는지 확인합니다.

코드가 더 나은 이유는 무엇입니까?

싱글톤에서 리팩토링하면 코드가 더욱 모듈화되고 테스트 가능해지며 전역 상태로 인해 발생하는 문제가 발생할 가능성이 줄어듭니다.

종속성을 주입하면 DatabaseConnection을 테스트 및 기타 컨텍스트에서 모의 ​​구현이나 다른 구현으로 쉽게 대체할 수 있습니다.

태그

  • 커플링

관련 리팩토링

Refactoring  - Replace Singleton

007 리팩토링 - 클래스 추출

맥시 콘티에리 ・ 2022년 7월 4일

#웹개발 #초보자 #자바스크립트 #지도 시간

또한보십시오

Refactoring  - Replace Singleton

싱글턴: 모든 악의 근원

맥시 콘티에리 ・ 2020년 11월 17일

#앗 #지도 시간 #코드뉴비 #프로그램 작성
Refactoring  - Replace Singleton

커플링: 유일한 소프트웨어 설계 문제

맥시 콘티에리 ・ 2021년 2월 6일

#웹개발 #프로그램 작성 #앗 #지도 시간

크레딧

Pixabay에서 가져온 PublicDomainPictures의 이미지


이 글은 리팩토링 시리즈의 일부입니다.

Refactoring  - Replace Singleton

손쉬운 리팩토링으로 코드를 개선하는 방법

맥시 콘티에리 ・ 2022년 10월 24일

#웹개발 #초보자 #프로그램 작성 #지도 시간

위 내용은 리팩토링 - 싱글톤 교체의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿