어떠한 클래스(객체가) 유일하게 1개만 존재 할 경우에 사용
주로 사용되는 곳은 서로 자원을 공유 할 때 사용
ex) 프린터, TCP Socket 통신에서 서버와 연결된 connect 객체, Spring의 bean
| Singleton |
| instance |
| singleton() getInstance() |
- 실습
// SocketClient.java
package com.company.gof.singleton;
public class SocketClient {
private static SocketClient socketClient = null;
private SocketClient(){
}
public static SocketClient getInstance(){
if(socketClient == null){
socketClient = new SocketClient();
}
return socketClient;
}
public void connect(){
System.out.println("connect");
}
}
//A.java
package com.company.gof.singleton;
public class A {
private SocketClient socketClient;
public A(){
this.socketClient = SocketClient.getInstance();
}
public SocketClient getSocketClient(){
return this.socketClient;
}
}
//B.java
package com.company.gof.singleton;
public class B {
private SocketClient socketClient;
public B(){
this.socketClient = SocketClient.getInstance();
}
public SocketClient getSocketClient(){
return this.socketClient;
}
}
//main.java
package com.company.gof;
import com.company.gof.singleton.A;
import com.company.gof.singleton.B;
import com.company.gof.singleton.SocketClient;
public class Main {
public static void main(String[] args) {
// write your code here
A a = new A();
B b = new B();
SocketClient aClient = a.getSocketClient();
SocketClient bClient = b.getSocketClient();
System.out.println("두개의 객체가 동일한가?");
System.out.println(aClient.equals(bClient));
}
}
-결과

'Spring' 카테고리의 다른 글
| Decorator pattern(데코레이터 패턴) (0) | 2021.04.18 |
|---|---|
| Proxy pattern(프록시 패턴) (0) | 2021.04.16 |
| Adapter pattern(어댑터 패턴) (0) | 2021.04.16 |
| 디자인 패턴 (0) | 2021.04.15 |
| POJO 클래스 (0) | 2021.04.15 |