Computer Science/디자인 패턴

싱글톤 패턴(SingleTon Pattern)

닉네임못짓는사람 2021. 12. 16. 22:45
반응형

싱글톤 패턴


싱글톤 패턴은 특정 클래스의 인스턴스를 최초 한 번만 생성하여 이후에 다른곳에서

해당 클래스의 생성자를 호출하더라도 새롭게 객체를 생성하는것이 아닌

최초로 생성된 객체를 반환하여 프로그램 전역에서 동일한 하나의 객체에 접근하도록 하는 디자인 형태이다.

 

장점


▶ 고정된 메모리 영역을 한 번만 할당하여 사용하여 하나의 객체만 생성하기 때문에 메모리 낭비를 줄일 수 있다.

▶ 싱글톤 패턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 데이터 공유가 용이하다.

▶ 최초 생성 이후에는 호출시 메모리에 이미 생성된 객체를 가져오기 때문에 객체 로딩 시간이 줄어든다.

▶ 인스턴스가 하나만 생성되는것을 보장한다.

 

안드로이드 같은 경우 SharedPreference를 사용할 때 이러한 싱글톤 패턴을 사용할 수 있다.

 

단점


싱글톤 패턴은 위와 같은 장점이 있지만 몇 가지 단점들에 대해 반드시 주의해야한다.

 

▶ 싱글톤 객체가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의

    인스턴스 간에 결합도가 높아져 개방-폐쇄 원칙을 위배하게된다.

    따라서 해당 프로그램의 수정과 테스트가 어려워진다.

개방-폐쇄 원칙은 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고,

수정에 대해서는 닫혀 있어야 한다는 프로그래밍 원칙이다.

▶ 멀티쓰레드 환경에서 동기화 처리가 제대로 되지않으면 인스턴스가 2개 이상 생성될 수 있는 가능성이 생긴다.

▶ 정적 메모리에 할당된 객체로, 해당 객체에 너무 큰 데이터가 쌓이게 되면 성능이 현저하게 낮아질 수 있다.

▶ 싱글톤 패턴 클래스 구현시 코드가 길어진다.

▶ 싱글톤 패턴 클래스는 private생성자를 갖고잇기 때문에 이를 상속받는 자식클래스를 생성할 수 없다

 

위와 같은 단점들 때문에 싱글톤 패턴은 유연성이 상당히 떨어지는 패턴이라고 할 수 있다.

반응형