ved_Rony
article thumbnail

static으로 Instance 만든후 null체크한 다음 인스턴스 생성

싱글턴 패턴이란?

어떤 클래스가 한번만 메모리를 할당(Static)하고, 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴.
즉, 메모리에 단하나의 인스턴스를 할당한 후에 그 인스턴스를 계속 참조하여 사용하는 것.
생성자가 여러차례 호출이 되더라도 생성된 객체 하나만 호출이 된다.

 

싱글톤 패턴을 쓰는 이유

메모리 낭비를 방지할 수 있음

싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다
공통된 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용

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

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

안드로이드 앱 같은 경우 각 액티비티나 클래스별로 주요 클래스들을 일일이 전달하기가 번거롭기 때문에 싱글톤 클래스를 만들어 어디서나 접근하도록 설계하는 것이 편하기 때문...

 

인스턴스가 절대적으로 한개만 존재하는 것을 보증하고 싶을 경우 사용.두 번째 이용시부터는 객체 로딩 시간이 현저하게 줄어 성능이 좋아지는 장점!

 

싱글톤 패턴의 문제점

싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아져 "개방-폐쇄 원칙" 을 위배하게 된다. (=객체 지향 설계 원칙에 어긋남)

 ->따라서 수정이 어려워지고 테스트하기 어려워진다.

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

멀티쓰레란?

하나의 프로그램에 동시에 여러개의 일을 수행할수 있도록 해주는 것 (자세한 것은 따로 페이지를 만들도록 하겠다.)

profile

ved_Rony

@Rony_chan

검색 태그