자바 디자인패턴 Singleton

최대 1 분 소요

singleton을 자꾸 singletone이라고 쓴다;;;

객체란

  • 객체 : 속성과 기능을 갖춘 것
  • 클래스 : 속성과 기능을 정의한 것
  • 인스턴스 : 속성과 기능을 가진 것 중 실제하는 것

Singleton

  • Singleton : 요소를 1개밖에 가지고 있지 않은 집합
  • 지정한 클래스의 인스턴스가 1개만 존재하는 것을 ‘보증’하고 싶을 때.
  • 인스턴스가 1개밖에 존재하지 않는 것을 프로그램 상에서 표현하고 싶을 때.

사용방법

  • 생성자를 private 로 선언하고, 해당하는 생성자를 클래스 내부에서만 호출

Uml

요구사항

개발 중에 시스템에서 스피커에 접근할 수 있는 클래스를 만들어주세요.

Code

SystemSpeaker.java

public class SystemSpeaker {

    static private SystemSpeaker instance;

    private  int Volumne;

    private SystemSpeaker() {
        Volumne = 5; 
    }

    public static SystemSpeaker getInstance() {
        if (instance == null) {
            instance = new SystemSpeaker(); // initialize
            System.out.println("log 생성");
        }else{
            System.out.println("log 이미 생성");
        }
        return instance;
    }

    public int getVolumne() {
        return Volumne;
    }

    public void setVolumne(int volumne) {
        Volumne = volumne;
    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        SystemSpeaker speaker1 = SystemSpeaker.getInstance();
        SystemSpeaker speaker2 = SystemSpeaker.getInstance();

        System.out.println(speaker1.getVolumne());
        System.out.println(speaker2.getVolumne());

        speaker1.setVolumne(1);
        // 동일한 인스턴스 값이기에 하나만 설정해도 같은 값을 가져온다.
        System.out.println(speaker1.getVolumne());
        System.out.println(speaker2.getVolumne());

        speaker2.setVolumne(30);
        System.out.println(speaker1.getVolumne());
        System.out.println(speaker2.getVolumne());
    }
}

Result

log 생성
log 이미 생성
5
5
1
1
30
30

댓글남기기