본문 바로가기
면접 준비

[면접준비] 싱글톤과 static의 차이점

by 스테디코디스트 2023. 8. 16.
반응형

1. 싱글톤

- 단 하나의 객체(인스턴스)만을 생성하여 해당 객체를 공유하는 디자인 패턴

- 객체를 생성하려고 할 때마다 이미 생성된 것을 반환하거나 없다면 해당 시간에 처음 생성함

- 정적 클래스와 달리 싱글톤 클래스는 확장, 재정의, 인터페이스 구현이 가능

- 생성 시점을 조정 가능

- 객체이므로 힙에 싱글톤 객체가 저장됨 -> 쓰레드간 공유 가능

- 직렬화가 가능

 

2. static

- 객체를 만들지 않고, 생성자도 갖지 않음

- 인터페이스 구현 불가능

- override 불가능

- 퍼포먼스는 빠름 

- 절차지향적 성향이 강함 -> 무분별한 사용은 객체 지향을 해침

- 어플리케이션이 메모리에 로드될 때 스택에 바로 초기화

- 정적 스택에 저장되기 때문에 쓰레드 관리가 어려움


<면접 예상 질문>

Q. 왜 static을 쓰지 않고 싱글톤 패턴을 사용했나요?

A. 싱글톤은 static 클래스와 달리 확장 및 재정의, 인터페이스 구현이 가능하여 다양하게 활용이 가능합니다. 또한 싱글톤은 객체가 힙에 저장되기 때문에 사용자가 생성시점을 조절할 수 있기에 쓰레드 관리가 가능하지만 static은 스택에 저장되기 때문에 시작시 생성되어 프로그램 종료시까지 유지되기 때문에 쓰레드 관리가 어렵습니다. 그리고 객체 지향 관점에서 봤을 때 static은 절차지향적인 성향이 강해 static의 특징을 지니며 객체지향의 성향을 가진 싱글톤을 사용합니다.