본문 바로가기
이론/디자인패턴

[디자인 패턴] 싱글톤 패턴 Singleton pattern

by 6161990 2021. 6. 4.

📌 Singleton pattern

어떠한 클래스(객체)가 유일하게 1개만 존재(해야)할 때 사용한다.

 


서로 자원을 공유 때 사용하는데, 

실물 세계에서는 프린터(여러 대의 컴퓨터가 하나의 프린터를 가지고 공유해 사용)가 해당되며, 

실제 프로그래밍에서는 TCP Socket 통신에서 서버와 연결된 

connect 객체(socket은 하나만 사용)에 주로 사용한다. 

스프링에서는 Bean이 있다. 

 어떠한 서버와 통신한다고 했을 때, 

때마다 연결하는 것이 아닌 한번 통로를 연결해놓고 사용한다. 

 

 

Singleton Pattern


 7  싱글톤은 자기 자신의 객체 가지고 있어야하며,
9 기본(디폴트) 생성자를 기본 생성자로 생성할 수 없도록 private 으로 막아놔야 한다. 

13 static 을 이용해 getInstance()를 만들어놓고,
14 자기 자신의 객체가 null이면 객체를 생성해주고,

17 null이 아니면 바로 객체를 return 해준다. 

Singleton 패턴(객체)를 이용하는 Aclasszz , Bclasszz 클래스

 

 

 

 Aclasszz , Bclasszz 클래스는 같은 자원(Socket Client)을 공유하고 있기 때문에

Aclasszz 과 Bclasszz는 동일한 객체가 된다.  

 

 


만약 둘이 같은 Singleton 방식이 아니었다면,
예를들어 , SocketClient 디폴트 생성자를 public으로 바꾸어주고 
Aclasszz, Bclasszz 둘 다  각각
this.socketClient = new SocketClient();
새로 객체를 만드는 방식으로 하면

두 객체는 동일하지 않게 된다. 

 

싱글톤 패턴 다른 예시로 알아보기

https://github.com/6161990/TIL/blob/main/DesignPattern/Singleton%20Pattern.md