와챠의 우당탕탕 코딩 일기장

[JAVA 디자인 패턴] - 5, Singleton 패턴 본문

코딩 일기장/JAVA 디자인 패턴

[JAVA 디자인 패턴] - 5, Singleton 패턴

minWachya 2020. 10. 2. 13:42
반응형

Singleton Pattern

 

Singleton 패턴은 인스턴스가 하나만 생성되는 패턴이다.

 

예제로는 하나뿐인 닌텐도를 언니랑 동생이 같이 사용하는 내용이다.

요즘 닌텐도 스위치는 하나에 여러 계정이 있다는데

이 예제에서는... 언니와 동생이 하나의 계정을 같이 키우고 있다고 치자.

언니를 갖고 싶은 내 바람과 닌텐도를 갖고 싶은 내 바람을 섞어봤다.

 

Singleton 패턴의 클래스 다이어그램

- : private

+ : public

밑줄 : static

 

 

 

실행 결과

 

Singleton 패턴의 장점

(인스턴스를 하나만 생성하므로)

  • 인스턴스가 상호간 영향을 주어 생기는 '예상치 못한 버그'를 생각하지 않고 프로그래밍할 수 있다.

Singleton 패턴이 뭐하는 패턴인지 책 예제만 보고는 잘 이해가 되지 않았는데,

네이버 지식백과에 적힌 예를 보고 바로 이해가 되었다.

 

거기 적힌 예는 컴퓨터 여러 대가 프린터기 하나를 사용하는 예였다.

여러 명이 프린트를 동시에 하지 못하게

하나의 프린트기가 하나의 일을 끝내면 다른 일을 시작하게 하는 내용이었다.

 

여기서 Singleton 패턴의 장점이 두드러진다.

여러명이 프린트를 동시에 하면 오류가 날 텐데,

프린트기가 하나임을 보장하는 Singleton 패턴을 사용함으로써

프린트기 하나가 일 하나씩 차례로 처리하도록,

즉 동시에 프린트하는 오류가 나지 않도록 하는 것이다.

 

이런 느낌임

Singleton 패턴을 사용하면 이런 느낌

 

 

내 예제에서도 마찬가지로

언니와 동생이 하나의 계정에 동시에 로그인하는 오류가 나는 일 없도록

닌텐도를 1개만 만들어 '동시에 로그인하는 오류'가 날 가능성을 없앤 것이다.

언니가 게임을 다 해야 동생이 게임을 할 수 있는 것도

차례대로 일을 하는 것을 나타낸다.

 

 

 

 

JAVA 언어로 배우는 디자인 패턴 입문(p 96~101) 참고

반응형
Comments