디자인 패턴 

싱글톤 패턴

같은 인스턴스를 여러 개 만들지 않고, 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어서 사용하는 패턴이다. 어디서든지 접근하기 쉽다.

 

구현방법

가장 기본적인 싱글턴 구현 방법이다. 인스턴스를 요청하기 전까지는 객체를 생성하지 않는다.

늦은 초기화(Lazy initialization) : 멀티스레드 환경에서는 동시에 Instance을 호출하게 되면 둘 이상 객체가 만들어질 위험이 있다.

 

정적 초기화

이른 초기화(Eager initialization) 

로딩 때 생성되므로 스레딩에 안전한 대신 미리 생성하므로 안 쓰는 경우에 메모리 낭비가 될 수 있음

 

멀티스레드에서 교착상태를 피하기 위한 싱글턴

교착상태를 피하기 위해 이중 검사 잠금

lock키워드 설명 : http://www.csharpstudy.com/Threads/lock.aspx

 

싱글턴 문제점

개방 폐쇄 원칙(OCP)을 위배될 수 있다. (객체 지향 설계 원칙)

커플링이 심해질 수 있음 => 한 곳에서 변경이 다른 부분에 영향을 미치게 될 확률이 커짐

 

학습 참고 사이트

 

반응형

+ Recent posts