싱글톤 패턴

김인범's avatar
Nov 13, 2024
싱글톤 패턴
특정 클래스의 인스턴스가 프로그램 내에서 오직 하나만 생성되도록 보장하는 디자인 패턴
한정된 자원 관리나 설정 공유가 필요한 상황에서 유용하다.

장점과 단점

장점

전역적 접근성 / 메모리 절약 / 동기화된 접근

단점

테스트가 어렵다 / 멀티스레드 문제 / 의존성 관리의 어려움
 

코드 예시

package ch04; public class Doorman { //static 으로 인해 메인 실행전에 Doorman을 띄워 놓을 수 있다. //private Doorman() {} //SRP -> single responsibilty principle 단일 책임 static Doorman instance = new Doorman(); private Doorman() { } public void 쫒아내(Animal animal){ System.out.println(animal.getName() + " 쫒아내"); } } ------------------------------------------------ public class App { public static void main(String[] args) { Doorman doorman = Doorman.instance; Doorman doorman2 = Doorman.instance; System.out.println(doorman.hashCode()); // response: 793589513 System.out.println(doorman2.hashCode()); // response: 793589513 Cat cat = new Cat(); Mouse mouse = new Mouse(); doorman.쫒아내(cat); doorman.쫒아내(mouse); } }
main이 실행 될 때 doorman이 하나만 생길 수 있게 만들었다. Doorman 클래스에서 static Doorman instance = new Doorman(); 이 코드에서 static을 통해 Doorman을 나타나게 했고 private Doorman() {} 을 통해 main에서 Doorman이 new로 생성되지 못하게 막아놓아서 중복된 Doorman을 생성할 수 없게 만들었다.
notion image
※ 싱글톤 패턴 , SRP 이해를 위한 그림
 

참고 문헌

Share article

taker