티스토리 뷰
싱글톤 패턴이란?
생성자를 반복적으로 호출하더라도 최초 생성된 객체(인스턴스)를 반환해주는 것이다. 싱글톤 패턴을 사용함으로써 얻는 장점은 다음과 같다.
1. 메모리낭비 방지 - 객체의 재사용으로 인해 반복적으로 생성할 필요가 없다.
2. 전역성(static) - 다른 객체와 공유가 용이하다. 그러나 결합도가 높아짐으로 변경시 사이드 이팩트 발생확률이 높다.
싱글톤 소스코드- [JAVA]
public class SingleTonTest {
// 외부접근 x, static으로 단일 생성
private static SingleTonTest stt = new SingleTonTest();
// private 생성자로 외부에서 생성 못하게
private SingleTonTest() {}
public static SingleTonTest getInstance() {
// Java에서 stt를 자동으로 해제해버리기 때문에 호출 시 오류가 발생할 수 있다.
if(stt == null) {
stt= new SingleTonTest();
}
return stt;
}
}
1. 전역변수 선언 : private로 외부접근을 방지하고 static을 사용해 인스턴스화할 필요가 없다.
2. 생성자 선언 : private로 선언해 new를 통한 생성자 호출을 방지한다.
3. getInstance 선언 : 인스턴스를 얻을 수 있는 방법이다. Java는 일정시간 변수를 사용하지 않으면 자동으로 메모리를 해제하기 때문에, 이러한 호출 오류를 방지하기 위해 stt가 null인지 체크해줄 필요가 있다.
그러나 사용자가 직접 싱글톤 패턴을 구현하는 경우 상속불가능, 단위테스트의 어려움, 전역상태를 가짐 등의 단점을 가지게된다. 스프링의 IoC컨테이너는 이러한 단점을 보완하여 싱글톤을 구현한다.
'Programming > Java' 카테고리의 다른 글
인자(argument)와 매개변수(parameter) 차이, 인자 전달 과정 (0) | 2022.03.15 |
---|---|
[Java] JVM 메모리 구조 (0) | 2022.03.09 |
[Java] 예외처리 : Try/Catch, Throws (0) | 2021.08.19 |
[Java] hashCode vs identityHashCode 차이점 (0) | 2021.08.05 |
[Java] String, StringBuffer, StringBuilder 차이점 (0) | 2021.08.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스
- 이클립스
- Thymeleaf
- JVM
- 오라클
- JSP
- 스프링
- svn
- 오류
- 국비교육
- 개발용어
- C
- Java
- SQL
- CS
- 데이터베이스
- 환경설정
- 인턴
- Open API
- CSS
- HeidiSQL
- 넥사크로
- 백준
- 부트스트랩
- 스프링부트
- 네트워크
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함