아 이게 뭐임!

싱글톤이 뭐임!!

마로가마따 2021. 7. 8. 14:26

싱글톤이 머임!!!!

싱글톤이란 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴을 의미한다.

 

 

단 하나의 인스턴스를 사용하여 여러번 호출해도 똑같은 인스턴스를 불러올수 있게한다. 내부에 선언되는 친구들을 private으로  선언하고 static을 줌으로써 인스턴스화 하지않고 사용가능하게 한다. 근데 클래스 내부에서 전역변수로 선언한다.

 

(인스턴스가 뭐지;;)

 

 

 

인스턴스가 뭐임!!

- 인스턴스(instance)란 객체 지향 프로그래밍(OOP)에서 클래스(class)에 소속된 개별적인 객체를 말한다.

- 객체를 소프트웨어에 실체화 하면 그것을 ‘인스턴스’라고 부른다.

- oop의 관점에서 객체가 메모리에 할당되어 실제 사용될 때 ‘인스턴스’라고 부른다.

등등 있는데 붕어빵 비유가 너무 찰떡인 것 같다.

붕어빵틀이 클래스면 붕어빵틀에서 찍어낸 붕어빵 각각이 인스턴스인 것!

 

 

 

그럼 싱글톤 왜 씀!

 

- 고정된 메모리 영역을 얻으면서 하나의 인스턴스를 생성하기 때문에 메모리 낭비를 방지할 수 있다

 

- 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다.

 

- DBCP(DataBase Connection Pool)처럼 공통된 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용한다.

 

- 인스턴스가 절대적으로 한개만 존재하는 것을 보증하고 싶을 경우 사용한다.

 

- 두 번째 이용시부터는 객체 로딩 시간이 현저하게 줄어 성능이 좋아진다.

 

- 안드로이드 앱 같은 경우 각 액티비티나 클래스별로 주요 클래스들을 일일이 전달하기가 번거롭기 때문에 싱글톤 클래스를 만들어 어디서나 접근하도록 설계하는 것이 편하다.

 

 

 

싱글톤 문제점

싱글톤은 전역성을 띄면서 다른 객체와 공통으로 사용하는 경우와 같은 몇 가지 케이스에서만 사용할 때 효율적이며 그 외에는 문제점이 생길 수 있다.


- 싱글톤으로 만든 객체의 역할이 간단한 것이 아닌 역할이 복잡한 경우라면 해당 싱글톤 객체를 사용하는 다른 객체간의 결함도가 높아져서 유연하게 대처할 수 없다. ("개방-폐쇄 원칙" 을 위배한다)


- 싱글톤 객체를 수정할 경우 싱글톤 객체를 사용하는 곳에서 사이드 이팩트 발생 확률이 생기게 된다(참조하고 있는 모든 값들이 변경되어야 하기 때문) 

 

- 멀티 쓰래드환경에서 동기화 처리 문제등이 생기게 된다.

 

 

 

 

Global is Evil...하다가 궁금해서 조사해봤습니다. 너무 길어서 따로 뺐습니다 ^^b

 

 

반응형

'아 이게 뭐임!' 카테고리의 다른 글

HikariCP이 뭐임!  (0) 2021.07.09
HeidiSQL이 뭐임!  (0) 2021.07.09
Connection Pool이 뭐임!!  (0) 2021.07.08
WinSCP가 뭐임!  (0) 2021.07.07
SQL developer가 뭐임!  (0) 2021.07.06