[디자인패턴] 5. Singleton

문정준's avatar
Jul 22, 2025
[디자인패턴] 5. Singleton
Contents
Singleton

Singleton

  • 시스템 내에서 단 하나만 존재하는 객체
  • 객체를 여러 개 만들지 않고 하나만 만들어서 코드에서 공유하여 사용
 

Q. 문지기를 여러 명 고용하지 말고 한 명만 근무하도록 하려면?

  • 현재 코드에서는 Doorman을 여러 개 생성할 수 있음
  • Doorman을 오직 하나만 만들어서 해당 Doorman을 공유하도록 만들고 싶음
notion image

A : Singleton 활용

  • static을 사용하여 메모리 공간에 Doorman을 하나만 생성
  • 해당 인스턴스를 공유하여 사용
public class Doorman { public static Doorman instance = new Doorman(); // main 시작 전 Doorman 메모리에 띄움 // static으로 떠있기 때문에 하나만 생성되어 있음 : Singleton // 생성자가 private = 외부에서 new 못함 private Doorman() { } // 객체의 책임(메서드) // 책임은 하나의 카테고리로 묶을 수 있어야 함 (여러 카테고리가 엮여 있으면 문제 분석이 어려움) // 책임은 1개만 있다면 제일 좋음 public void 쫓아내(Animal animal) { System.out.println(animal.getName() + " 나가!"); } } public class App { public static void main(String[] args) { Mouse m1 = new Mouse(); Cat c1 = new Cat(); Doorman d1 = Doorman.instance; d1.쫓아내(m1); d1.쫓아내(c1); } }
Share article

sxias