❌ Singleton 사용을 그만두세요. 필요 없으며 (조용히 당신의 코드를 해치고 있습니다)
Source: Dev.to
싱글톤이 하는 일
싱글톤은 클래스가 하나의 인스턴스만 가지도록 보장하고, 그 인스턴스에 전역적으로 접근할 수 있게 합니다.
Logger.getInstance().log("Hello");
하나의 인스턴스. 전역 접근.
실제 문제점
싱글톤은 단순히 전역 상태일 뿐입니다.
코드 어디서든 접근하고, 변경하고, 명시적이지 않게 의존할 수 있습니다. 이로 인해 시스템을 이해하고, 테스트하고, 변경하기가 어려워집니다.
시니어 엔지니어가 피하는 이유
싱글톤은 종종 다음과 같은 문제를 일으킵니다:
- 숨겨진 의존성
- 어려운 단위 테스트
- 요청 간 상태 누수
- 클래스 간 강한 결합
초기에 편리해 보이지만 나중에 기술 부채가 됩니다.
더 나은 접근법
전역 객체에 접근하는 대신, 의존성을 명시적으로 전달하세요.
이렇게 하면 의존성이 눈에 보이고, 코드를 테스트하기 쉬우며, 시스템이 더 유연해집니다.
간단한 규칙
의존성을 전달하는 것이 번거롭게 느껴진다면, 해결책은 더 좋은 설계일 뿐이며—싱글톤이 아닙니다.