Singleton Pattern (싱글톤 패턴)

김동현·2021년 6월 22일
0

design pattern

목록 보기
1/3

Singleton pattern이란?

어떤 클래스(객체)가 유일하게 하나만 존재할 때 사용하는 패턴.

그 말은 달리 말하자면 여러 곳에서 이 객체를 같이 공유하고 있다는 말이 됩니다. 예시 코드를 작성해보겠습니다.

위 코드처럼 SocketClient라는 클래스를 static으로 선언해 딱 하나만 존재하도록 한다는 것이죠.

Singleton pattern의 장점

  1. 메모리 낭비 방지
    불필요하게 동일한 객체가 쓰이는 곳에 새로운 객체를 생성하게 되면 메모리의 낭비가 이루어지지만 싱글톤 패턴을 사용하게 되면 그런 일을 방지할 수 있습니다.

  2. 데이터 공유
    앞에서 언급했듯이 여러 곳에서 이 객체를 쉽게 공유할 수 있습니다.

Singleton pattern의 문제점

  1. 테스트의 어려움
    항상 객체를 공유하고 있기 때문에 그 객체를 격리하여 테스트하려면 항상 객체를 초기화시켜줘야 합니다.

  2. SOLID 위반
    클래스 안에서 new 키워드를 통해 객체를 직접 생성하므로 DIP를 위반하고 OCP도 위반한다고 할 수 있습니다.

그 외에 다른 클래스가 상속할 수 없다는 점, 내부 클래스를 변경하기 어렵다는 점에서 여러 문제가 있습니다.

마무리

안티패턴으로 불릴 만큼 객체 지향에 위배되는 경우가 많지만, 스프링 컨테이너 프레임워크와 같이 사용하는 Bean 의 경우는 이 문제점들을 극복하며 장점을 잘 이용하고 있습니다.

그렇지 않은 경우 장점과 단점을 잘 파악하며 사용해야 합니다.

profile
개발을 해보자

0개의 댓글