디자인 패턴 - 싱글톤 패턴

namkun·2022년 9월 13일
0

디자인 패턴

목록 보기
1/3

싱글톤?

싱글턴 패턴은 하나의 클래스에 오직 하나의 인스턴스만 갖는 패턴이다.

예를 들어서 자바로 구현하면 다음과 같다.

public class Singleton {
    // 인스턴스
    private static Singleton singletonInstance = new Singleton();

    // private 생성자
    private Singleton(){
    	// 외부에서 new로 생성할 수 없도록 private로 구현
    }

    // 접근용
    public static Singleton getSingleton(){
        return singletonInstance;
    }
}

특정 클래스를 static으로 최초 한번만 메모리에 할당하고, 메모리에 객체를 만들어 사용하도록 했다.

이렇게 객체를 한번 생성해두면 재 사용이 가능해서 메모리의 낭비를 방지할 수 있으며 static으로 생성해두었기에 다른 객체와의 공유에도 용이하다.

단점

TDD

싱글톤 패턴은 TDD를 할 때 걸림돌이 된다.
단위 테스트의 경우 테스트가 서로 독립적이어야 하는건 테스트를 어떤 순서로든 실행이 되어야 하는데, 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이기에 각 테스트마다 독립적인 인스턴스를 만들기가 어렵다.

커플링

싱글톤 패턴은 사용하기 쉽지만, 모듈 간의 결합력을 강하게 만든다. 이는 객체 지향 설계 원칙중 개방-폐쇄 원칙(기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계가 되어야 한다)에 어긋난다.

그래서 이런 경우에는 의존성 주입(Dependency Injection)을 통해서 모듈간 결합을 느슨하게 할 수 있다.

특정 인스턴스가 '직접적'으로 다른 모듈에 의존성을 주기 보다는, 중간에 의존성 주입자가 직접적으로 의존성을 주는 부분을 가로채서 인스턴스에 대해서 '간접적'으로 주입하는 방식으로 바꿀 수 있다.

profile
개발하는 중국학과 사람

0개의 댓글