Backend CS - #8 싱글턴 패턴

박주현·2023년 2월 24일
0
post-thumbnail

싱글턴 패턴이란?

  • 객체의 인스턴스를 하나만 생성되게 하는 패턴
  • 전역변수를 사용하지 않으며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴

장점

  1. 메모리
    : 최초 한번의 new연산자를 통해 고정된 메모리 영역을 사용하기에 해당 객체에 접근할 경우 생기는 메모리 낭비를 방지
  2. 속도
    : 이미 생성된 인스턴스를 활용, 사용하기에 속도도 빠르다
  3. 데이터 공유
    : 전역으로 사용되는 인스턴스이므로 다른 클래스의 인스턴스들이 접근하여 사용가능하기에 데이터 공유가 쉽다.

단점

  1. 많은 코드 수
  2. 테스트 하기 어려움
    : 싱글톤 인스턴스가 자원을 공유하고 있기에 테스트를 진행하고자 할 경우에는 인스턴스를 매번 초기화를 한 후 실행해야함.
  3. 클라이언트가 클래스에 의존
    : new 키워드를 직접 사용하여 클래스 안에서 객체를 생성하기에 SOLID 원칙 중에 DIP를 위반하고 OCP원칙을 위반할 수 있다.

※ SOLID 원칙이란?
: 객체지향 설계원칙의 5가지
1. SRP(Single Responsibility) 단일 책임 원칙
- 클래스는 단 한개의 책임을 가져야함
- 클래스를 변경하는 이유는 단 하나 이어야함.
- 지키지 않을 경우에는, 다른 책임과 관련된 코드에 영향을 줌. -> 유지보수에 비효율
2. OCP(Open-Closed) 개방 폐쇄 원칙
- 기존 코드를 변경하지 않고 수정하거나 추가할 수 있도록 설계해야함.
- 줄줄이 고치게 될 경우에는 객체지향 프로그래밍의 장점인 유연성,재사용성, 유지보수성을 잃어버림.
3. LSP (Liskov Substitution) 리스코프 치환 원칙
- 하위 타입 객체는 상위 타입 객체에서 가능한 행위를 수행할 수 있어야함.
- 상속관계에서는 일반화 관계가 성립되어야함
4. ISP (Interface Segregation) 인터페이스 분리 원칙
- 클라이언트는 자신이 사용하는 메소드에만 의존해야함.
- 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야함.
5. DIP (Dependency Inversion) 의존 역전 원칙
- 변하기 쉬운 것 보다는 변하기 어려운 것에 의존해야함.
- 구체화된 클래스에 의존하기 보단 추상 클래스나 인터페이스에 의존해야함.

profile
빌드업 막 시작하는 개발자

0개의 댓글