GoF 디자인패턴 - Singleton

Clean Code Big Poo·2025년 6월 3일
0
post-thumbnail

Overview

디자인패턴 시작하기를 보고 정리하기

Singleton

하나의 클래스 타입에 대해 오직 하나의 객체만 만들어지는(보장하는) 패턴

접근 할 수는 있지만, 새로 생성할 수는 없다.

다이어그램

<<>> 으로 singleton으로 명칭

구현 코드

King

public class King {
    ///  private으로 생성자 선언, '나'외에는 생성 불가
    private King(){}

    /// private: '나'만 접근 가능
    /// static: Class 이름 으로 접근 가능
    private static King self = null;

    ///  synchronized: 멀티 스레드에서 호출시 문제 없도록 동기화 목적
    public synchronized static King getInstance(){
        if (self == null){
            ///  한번도 생성된적 없으면 생성
            self = new King();
        }

        return self;
    }

    public void say(){
        System.out.println("I'm Only ONE!");
    }
}

Main

public class Main {
    public static void main(String[] args){
        //King king = new King(); // [ERROR] java: King() has private access in King

        King king = King.getInstance();
        king.say();
    }
}

0개의 댓글