디자인 패턴 정리 (GOF - Singleton Pattern)

Youngmin Choi·2021년 12월 1일
0

Design-Pattern

목록 보기
3/9
post-thumbnail

3. Singleton Pattern (싱글톤 패턴)

  • 용도 :
    시스템 내부에 1개의 인스턴스(static)만 생성하고 싶은 경우에 사용한다.


    요약 :
    어떤 클래스의 객체가 프로그램 전체에서 단 하나만 만들어지도록 하는 것이다. 즉, 단 한개의 인스턴스(static)만을 갖도록 보장하고, 이에 대한 전역적인 접근점(Data 영역)을 제공한다!

  • 사용 방법 :
    생성자를 private으로 선언하고, 해당하는 생성자를 클래스 내부에서만 호출함.
  • 단점은 전역 변수이므로 전역변수가 가지는 모든 장단점을 다 가지고 있다~
    모든 곳에서 접근이 가능하므로 싱글톤 객체의 변경 시점, 변경 주체, 호출 시점을 모두 알기가 어렵다. 즉, 코드가 점점 커지면 짬뽕되기 쉽다.. 다른말로 여러 클래스와 커플링이 되어 OOP 5대원칙 중 하나인 단일책임원칙(SRP)을 지키지 못할 가능성이 크다!


    복습:) OOP 5대 원칙 중 첫번째! 단일책임원칙(SRP)이란?
    모든 Class는 하나의 책임만 가지며,
    그 책임은 완전히 캡슐화 되어야 한다!
    (응집도 High / 결합도 Low)
    결론은 여러 클래스들과 연루되어 있지마~


    번외:) 또 다른 문제!
    멀티 쓰레드 환경에서 문제가 있다고 한다..
    싱글톤은 말 그대로 하나의 인스턴스만을 가지고 있고, 전역 접근이 가능하기 때문에 race condition이 발생할 수 있다!
    이를 막기 위해 싱글톤은 mutex lock, unlock를 반복적으로 걸기 때문에 코드의 성능은 떨어진다고 한다..

    ex1)
    구조 :
  1. class SoundManager
  2. class Bomb

  • Player라는 Layer가 Bomb객체에 부딪히면 Exploded() 함수가 실행되면서 SoundManager에 있는 이펙트 소리를 실행시킨다!
profile
Always, Continually, In all circumstance

0개의 댓글