Design Patterns Explained | Java, Singleton, Thread Safety & Anti-Pattern
- 디자인 패턴은 재사용 가능하고 모듈화된 방식으로 생각하는 방법을 가르쳐준다. 🧩
- 싱글톤 패턴은 클래스의 인스턴스가 오직 하나임을 보장하고 전역 접근점을 제공한다. 🔑
- 싱글톤은 설정 관리자, 로깅 서비스, 스레드 풀과 같은 공유 자원 관리에 유용하다. ⚙️
getInstance()
메서드에서 동기화는 여러 스레드가 동시에 인스턴스를 생성하는 것을 방지한다. 🛡️
- 이중 검사 로킹은 불필요한 동기화를 피하면서 단일 인스턴스 생성을 보장한다. ✅
- 싱글톤은 의존성을 숨기고, 단위 테스트를 어렵게 하며, 전역 상태를 도입하여 예상치 못한 부작용을 일으킬 수 있다. ⚠️
- 로깅, 설정, 환경 설정과 같이 정확히 하나의 인스턴스가 필요한 경우에만 싱글톤을 사용해야 한다. 💡
- 스프링의 의존성 주입은 팩토리 패턴에 크게 의존하고, 리액트의 고차 컴포넌트는 데코레이터 패턴이다. 🖼️