본문 바로가기

IT 개념

싱글톤 객체

정보처리기사에서도 보고,

JSP 에서 DAO를 할 떼 getInstance() 로 싱글톤 패턴을 사용한다고 하는데

의미가 정확히 와닿지 않아서 찾아보았습니다.

https://jeong-pro.tistory.com/86

싱글톤 패턴(Singleton pattern)을 쓰는 이유와 문제점

싱글톤 패턴(Singleton Pattern) 싱글톤 패턴 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴. 생성자가 여러 차례 호출되..

jeong-pro.tistory.com

1. 싱글톤 패턴

1) 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를

만들어 사용하는 디자인패턴

2) 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는

최초에 생성한 객체를 반환한다.

※ 인스턴스가 하나 있다는 의미이군요.(객체가 단 하나)

2. 싱글톤 패턴을 쓰는 이유

1) 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비 방지

2) 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를

공유하기 쉬움

3) DBCP(DataBase Connection Pool) 처럼 공통된 객체를 여러 개 생성해서 사용해야 하는 상황에 많이 사용

(쓰레드풀, 캐시, 대화상자, 사용자 설정, 레지스트리 설정, 로그기록 객체 등)

※ 인스턴스가 절대적으로 한개만 존재하는 것을 보증하고 싶을 경우 사용

※ 두 번째 이용시부터는 객체 로딩 시간이 현저하게 줄어 성능이 좋아짐

3. 싱글톤 패턴의 문제점

1) 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가

높아져 "개방-폐쇄 원칙"을 위배하게 됨

2) 즉, 수정이 어려워지고 테스트 하기 어려워짐.

3) 멀티쓰레드 환경에서 동기화처리를 안하면 인스턴스가 2개가 생성된다는지 하는 경우가 발생할 수 있음

'IT 개념' 카테고리의 다른 글

Spring Security  (0) 2021.06.21
Forward, Redirect  (0) 2021.06.18
Spring AOP (Aspect-Oriented Programming)(관점지향 프로그래밍)  (0) 2021.06.15
Spring, ResponeseEntity  (0) 2021.06.15
jQuery .val() (javascript)  (0) 2021.06.15