🍓 개요
자바에서 싱글톤 (SingleTone)패턴은 객체 지향 프로그래밍에서 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴이다. 이 패턴은 특정 클래스의 객체가 프로그램 전반에서 단 하나만 존재해야 할 때 사용된다. 예를 들어, 설정, 데이터베이스 연결, 로거 등의 경우에 많이 사용된다.
🍊 싱글톤과 네트워크
대규모 시스템이나 웹 어플리케이션에는 네트워크 자원 관리의 중요성이 크게 부각이된다. 전통적으로 네트워크 연결, 데이터 베이스 접근, 웹 서비스 호출 등은 각 요청이나 작업마다 새로운 연결을 생성하고 소멸시키는 방식(매번 새로운 객체를 생성)으로 처리 되곤했다. 그리고 이것은 리소스 측면에서 비효율적이였고, 시스템 성능 저하의 주 원인이 되곤 했다.
이러한 문제점을 해결하는 데에 싱글톤 패턴이 자리잡았다. 이 패턴을 통해 네트워크 각 요청마다 반복적인 생성과 소멸이 발생하는 대신에, 단 하나의 인스턴스로 생성하고 관리하게 되면서 오버헤드를 크게 줄일 수 있게 되었다. 또한 어플리케이션에서 일관된 설정과 정책을 적용할 수 있도록 중앙화 시킬수 있어, 안정성과 유지 보수성 측면에서도 이점을 제공한다. 이 패턴의 장점을 요약하자면 다음과 같다.
- 자원 공유 및 관리
- 성능 최적화
- 일관성 유지
- 접근 제어 및 동기화
- 중앙화된 관리
- 디자인패턴 호환성
하지만 이 싱글톤, 이 하나의 인스턴스에 너무 많은 책임이 부여되면 시스템의 유연성을 저하시킬 수 있으므로 주의하여야 한다. 그러므로 항상 안정성과 유지보수성을 항상 염두에 두어야 된다.
🍋 싱글톤의 문법
싱글톤 문법의 예시
- Private [클래스명] ()
이는 생성자의 문법으로 이렇게
private
으로 만들어 외부에서 인스턴스를 생성할 수 없게 한다. 때문에 new로 객체를 생성할 수가 없다. - Private Static [클래스명] [변수] = new [클래스명] ()
필드 구간에서
private static
을 사용하는 패턴에서는 클래스 로딩 시점에 객체를 생성하고 그 클래스의 단 하나의 인스턴스가 된다. 이는 클래스의 모든 인스턴스에 의해서 공유가 된다. - Public Static [클래스명] getInstance ()
싱글톤 클래스의 생성자는
private
으로 선언되어서 외부에서 인스턴스를 생성할 수가 없다. 그래서 이 메소드를 통해서 외부에서 싱글톤 인스턴스에 접근 가능하게 도와준다. 따라서 이 인스턴스를 클래스명.getInstance()
를 통해서 재사용을 할 수 있게 된다. Share article