inblog logo
|
sxias
    디자인패턴

    [디자인패턴] 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
    Contents
    Singleton

    Sxias ㆍ a32176740@gmail.com

    RSS·Powered by Inblog