대학원 일기

[Design Patterns] 싱글톤 패턴(Singleton Pattern) 본문

Computer programming/Design patterns

[Design Patterns] 싱글톤 패턴(Singleton Pattern)

대학원생(노예) 2021. 12. 28. 00:23

싱글톤 패턴(Singleton Prattern)

해당 클래스의 인스턴스가 하나만 생성이 되는 것을 보장하며 어디서든지 그 인스턴스에 접근이 가능하도록 하는 패턴

  • 클래스에 대한 단일 객체 생성
  • 전역 객체 제공
  • 공유된 리소스에 대한 동시 접근 제어

하나의 인스턴스만을 유지하기 위해 인스턴스를 생성할 때, 생성자에 private 접근 제어자를 지정하고, 유일한 단일 객체를 반환할 수 있도록 정적 메소드를 지원해야 한다. 

- 클래스에 instance인 private 멤버 변수를 선언

- 생성자를 private으로 선언하여 외부에 노출시키지 않음

- static으로 전역에서 접근이 가능한 정적 메소드를 생성해서 인스턴스를 반환함

 

장점

  • 객체를 여러번 생성할 필요가 없고, 기존에 생성된 것을 가져다 쓰기 때문에 메모리와 성능 측면에서 효율이 좋다.
  • 도메인 상에서 인스턴스가 절대적으로 한개만 존재하는 것을 보증할 수 있다.

단점

  • 싱글톤을 구현하는 코드가 많이 들어간다. (thread-safe 고려)
  • 클래스 내부에서 객체를 직접 생성하기 때문에 객체 지향 설계원칙인 OCP, DIP를 위배한다.
  • 테스트가 어렵다.

Comments