티스토리 뷰
반응형
🚀 스프링에서 디자인 패턴의 중요성
디자인 패턴
은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이
인정한 가장 효율적인 예시를 정리한 패턴의 집합이다.
🌠 싱글톤 패턴 - 개방 폐쇄 원칙(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
반응형
'SPRING 🍃 > 디자인패턴' 카테고리의 다른 글
디자인 패턴 - 템플릿 메서드 패턴 (0) | 2022.04.11 |
---|---|
디자인 패턴 - 전략 패턴 (0) | 2022.04.10 |
디자인 패턴 - 데코레이터 패턴 (0) | 2022.04.08 |
디자인 패턴 - 프록시 패턴 (0) | 2022.04.06 |
디자인 패턴 - 어댑터 패턴 (0) | 2022.04.05 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C언어
- java
- 릿코드
- springboot
- Algorithm
- OOP
- interview
- docker
- 스프링
- 자격증
- 알고리즘
- ajax
- Spring
- 자바
- JPA
- 그래프
- spring-cloud
- 수학
- Matlab
- Solid
- 백준
- 스프링부트
- 프로그래머스
- CS
- 디자인패턴
- kakao
- 면접
- nginx
- security
- 매트랩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함