싱글톤 패턴(singleton pattern)

dlrmawn·2023년 12월 11일

CS

목록 보기
1/7
post-thumbnail

싱글톤 패턴(singleton pattern)

하나의 클래스에 오직 하나의 인스턴스만 가지는 디자인 패턴
보통 데이터베이스 연결 모듈에 많이 사용

public class Singleton {

    private static Singleton instance = new Singleton();
    //전역 변수 'instance'는 해당 클래스 내에 유일한 인스턴스로 지정
    private Singleton() {
			// 생성자가 private으로 선언되어 외부에서 직접적으로 인스턴스를 생성할 수 없도록 함
			//이것이 싱글톤 패턴
    }

    public static Singleton getInstance() {
        return instance;
    }

    public void say() {
        System.out.println("hello");
    }
}

싱글톤 패턴은 애플리케이션 내에서 하나의 인스턴스만을 생성하고,
그 인스턴스에 접근할 때는 항상 동일한 인스턴스를 반환하도록 보장합니다



싱글톤 패턴의 장점 VS 단점

장점

  • 인스턴스 생성 시 비용 감소 ( 하나의 인스턴스 공유해 사용)
  • 메모리 낭비 방지 및 쉬운 데이터 공유

단점

  • 테스트마다 '독립적인' 인스턴스 생성이 어렵다.
    미리 생성된 하나의 인스턴스을 기반으로 구현하기 때문

  • 모듈간의 결합을 강하게 만들 수 있다.
    -> 해결방안 : 의존성 주입(DI, Dependency Injection)



의존성 주입(DI, Dependency Injection)

메인모듈을 대신해 '간접'적으로 의존성을 주입한다.
메인 모듈(상위 모듈)은 하위 모듈에 대한 의존성(종속성)이 떨어진다.
== '디커플링된다'

의존성 주입 원칙

"상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야 한다.
"둘 다 추상화에 의존해야 하며 추상화는 세부사항에 의존해서는 안된다."


의존성 주입의 장점 VS 단점

장점

  • 테스팅과 마이그레이션이 쉽다.(쉽게 교체할 수 있는 구조)
  • 애플리케이션의 의존성 방향이 일관되며 애플리케이션을 쉽게 추론할 수 있다.
  • 모듈간의 관계가 명확해진다.

단점

  • 클래스 수가 늘어 복잡성 증가
  • 약간의 런타임 패널티 가능성








참고
면접을 위한 cs 전공지식 노트

profile
수정해야 할 내용 있으면 메일 부탁드립니다! ⍥

0개의 댓글