📌 Singleton pattern
어떠한 클래스(객체)가 유일하게 1개만 존재(해야)할 때 사용한다.
서로 자원을 공유할 때 사용하는데,
실물 세계에서는 프린터(여러 대의 컴퓨터가 하나의 프린터를 가지고 공유해 사용)가 해당되며,
실제 프로그래밍에서는 TCP Socket 통신에서 서버와 연결된
connect 객체(socket은 하나만 사용)에 주로 사용한다.
스프링에서는 Bean이 있다.
어떠한 서버와 통신한다고 했을 때,
때마다 연결하는 것이 아닌 한번 통로를 연결해놓고 사용한다.
7 싱글톤은 자기 자신의 객체 를가지고 있어야하며,
9 기본(디폴트) 생성자를 기본 생성자로 생성할 수 없도록 private 으로 막아놔야 한다.
13 static 을 이용해 getInstance()를 만들어놓고,
14 자기 자신의 객체가 null이면 객체를 생성해주고,
17 null이 아니면 바로 객체를 return 해준다.
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
'이론 > 디자인패턴' 카테고리의 다른 글
[디자인 패턴] 옵저버 패턴 Observer Pattern (0) | 2021.06.06 |
---|---|
[디자인패턴] 데코레이터 패턴 Decorator Pattern (0) | 2021.06.06 |
[디자인 패턴] 프록시 패턴 Proxy Pattern (0) | 2021.06.04 |
[디자인패턴] 어뎁터 패턴 Adapter Pattern (0) | 2021.06.04 |
[디자인패턴] Design Pattern 의 효용과 종류 (0) | 2021.06.04 |