싱글톤 패턴 Singleton pattern 이란?
<서론>
싱글톤이란 ..
뭘까?
나는 중학교 3학년부터 현재 23살이 될때까지 여러 언어를 접하고 공부했다
매번 현재 하고 있는 언어에서 다른 언어를 배우기 시작하기 전에
마음 한구석에 찔리는게 있다
'그것도 제대로 못하는데 뭘 배워?'
그래도 했다
그렇다고 새로운 시작이 또 제자리 걸음은 아니었던것 같다
근데 얕은 지식이다보니 깊은 곳에는 뭐가 있는지 모른다
그중 하나가 오늘 공부할 싱글톤(Singleton pattern)
여러 강의를 보다 보면
'이 부분은 싱글톤패턴으로 코드를 짤게요'
라고 한다..
아니 싱글톤이 뭐야?
검색해서 한번 알아보고
'아아~' 끝이다.
그래서 이번엔 쓰는둥 마는둥한 자습서에라도 써보겠다
<본론>
1. 싱글톤 패턴은 외롭다 (최초 한번만 생성)
Singleton pattern은
처음 불러질때만 생성이 되고
그 이후로는 불러도 처음 불려진 놈이 오는거다
그니까 여러개가 생성이 안되니
메모리라고 부르는 집이 하나(싱글톤 클래스 하나의 메모리공간)밖에 필요하지 않은것이다
2. 싱글톤 패턴은 역마살이 끼었다 (전역성)
그리고 외로움때문에 전역성이라는 역마살을 가지고 있어서
보부상놀이하기 딱 좋다 ( 다른 클래스의 인스턴스들과 데이터 공유가 쉽다)
2-1. 싱글톤 패턴은 사실 쿠팡맨
DBCP(DataBase Connection Pool)과 같은 공통된 택배(객체)를
배달하는데 특화되있어(전역성) 어디서나 로켓배송이 가능하다
3. 싱글톤 패턴은 공인된 찐따
인스턴스가 하나밖에 없다라는 것을 보증해준다
4. 싱글톤 패턴은 (타의적)히키코모리
싱글톤 패턴은 태어날때(new) 빼고는 집(메모리)에 쳐박혀 있어서
약속(call)이 생기면 싱글벙글하며 약속장소로 달려나간다 (2번째 call 부터 객체 생성시간 없음)
5. 싱글톤 패턴은 연애를 해본적이 없기에 많이 부르면 커플링을 만든다
싱글톤 패턴은 여기저기서 쓰이기 좋지만 오히려 너무 많이 쓰면
그만큼 싱글톤 인스턴스와 다른 클래스의 인스턴스가
커플링(Coupling - 하나의 모듈을 수정하기 위해 양쪽 모두 수정을 해야 하는것)을 이룬다면
결합도 또한 높아져 객체지향 5원칙 (SOLID Principle)의 개방-폐쇠원칙(Open-Closed Principle)을 위반하게 된다
결국 망상에 빠져 상상속으로는 손자 보고 노후까지 준비하다 꼴아박는거다
6. 이세계에서는 내가 여럿??
쓰레드 환경에서 동기화를 안해주면 여러곳에서 동시에 호출되어
찐따 싱글톤이 여러개 생길수도 있다
<결론>
편한데 적당히 쓰자