SPRING 🍃/디자인패턴
디자인 패턴 - 싱글톤 패턴
절취선
2022. 4. 9. 11:18
반응형
🚀 스프링에서 디자인 패턴의 중요성
디자인 패턴
은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이
인정한 가장 효율적인 예시를 정리한 패턴의 집합이다.
🌠 싱글톤 패턴 - 개방 폐쇄 원칙(OCP), 의존 역전 원칙(DIP)
커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우 인스턴스를 여러개 만들게 되면 불필요한 자원을 사용하게 된다.
여기서 싱글톤 패턴
을 적용하여 하나의 인스턴스를 만들어 사용하기 위한 패턴이다.
단일 객체를 사용하는 패턴인 만큼 의미상 두개의 객체가 존재할 수 없으며,
이를 구현하기 위한 new
에 재역울 걸어야 하고, 만들어진 단일 객체를 반환할 수 있는 메서드가 필요하다.
new
를 실핼할 수 없도록 생성자에 private 접근 제어자를 지정한다.- 유일한 단일 객체를 반환할 수 있는 정적 메서드가 필요하다.
- 유일한 단일 객체를 참도할 정적 참조 변수가 필요하다.
싱글톤 패턴 - 적용 후
public class Singleton {
static Singleton singletonObject; // 정적 참조 변수
private Singleton() {
}; // private 생성자
// 객체 반환 정적 메서드
public static Singleton getInstance() {
if (singletonObject == null) {
singletonObject = new Singleton();
}
return singletonObject;
}
}
public class Client {
public static void main(String[] args) {
// private 생성자임으로 new 할 수 없다.
// Singleton s = new Singleton();
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
Singleton s3 = Singleton.getInstance();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
s1 = null;
s2 = null;
s3 = null;
}
}
생성자를 private
으로 지정한 것으로 개발자는 new
를 통해 객체를 생성할 수 없다.
🌠 정리
클래스의 인스턴스 객체를 하나만 만들어 사용하는 패턴
- private 생성자를 갖는다.
- 단일 객체 참조 변수를 정적 속성으로 갖는다.
- 단일 객체 참조 변수가 참조하는 단일 객체를 반환하는
getInstance() 정적 메서드
를 갖는다. - 단일 객체는 쓰기 가능한 속성을 갖지 않는 것이 정석이다.
🧾 Reference
반응형