Singleton Pattern (싱글톤 패턴) by (Java, JavaScript, Python)

2018. 9. 17. 05:35cs/디자인 패턴

Singleton 패턴 


클래스의 인스턴스를 하나만 만들기 위해서 사용하는 패턴이 Singleton 패턴이다.   


하나만 만들면 


1. 전역적으로 사용할 수 있기 때문에 데이터 저장 혹은 호출 하기가 쉽다. 

2. 처음 만들어진 객체가 다음 호출에도 계속 사용되는 객체라서 메모리를 절약할 수 있다. 


요약하자면

 클래스가 하나의 인스턴스만을 만들어서 사용할 수 있게 보장하기위한 패턴이 Singleton Pattern이다.



언어별 사용법

Java
는 완전히 private 생성자를 만들어서 완전히 new를 통한 생성을 하지 못하게 만들고 클래스 내에서 객체를 만들어서 static method를 통해서 객체를 가져옵니다. 


Python은 자바와 달리 평범하게 객체를 못만들게 하지는 않고 처음 객체를 만들 때 super().__new__()를 통해 Singleton 객체를 만들어서 인스턴스 변수에 넣어준다. 

#__new__ 인스턴스가 만들어지기 전 클래스에서 가장 먼저 호출 되는 함수이다. 


JavaScript은 es6의 문법을 사용해주면 쉽게 구현해줄 수 있습니다. 


셋다 자세히 보면 조금 씩 다르지만 크게 차이가 나지는 않는다.