디자인 패턴 - 싱글톤 패턴

썩은요플렛's avatar
Aug 02, 2024
디자인 패턴 - 싱글톤 패턴
 

싱글톤 패턴

 
싱글톤 패턴(Singleton Pattern)은 객체지향 프로그래밍에서 하나의 클래스에 대해 오직 하나의 인스턴스만 존재하도록 보장하고, 이 인스턴스에 대한 전역 접근점을 제공하는 디자인 패턴. 싱글톤 패턴은 주로 애플리케이션의 설정 관리, 로그 관리, 또는 데이터베이스 연결과 같이 하나의 인스턴스를 여러 곳에서 공유해야 할 때 사용된다. 이 패턴은 주로 전역적인 상태를 관리하거나, 인스턴스가 하나만 필요할 때 사용된다.
 

싱글톤 패턴의 목적

 
  1. 인스턴스의 유일성 보장: 클래스의 인스턴스가 하나만 존재하도록 보장
  1. 글로벌 접근점 제공: 생성된 유일한 인스턴스에 대한 전역 접근점 제공
  1. 리소스 절약: 인스턴스를 여러 개 생성하지 않으므로 메모리와 리소스를 절약할 수 있음
 

싱글톤 패턴의 장단점

 
  • 장점
  1. 전역 접근: 애플리케이션 전체에서 인스턴스 공유 가능.
  1. 리소스 관리: 하나의 인스턴스를 통해 리소스를 효율적으로 관리 가능
  1. 인스턴스 생성 제어: 인스턴스가 여러개 생성되지 않도록 제어 할 수 있음.
 
  • 단점
  1. 테스트 어려움: 전역 인스턴스로 인해 단위 테스트가 어려움
  1. 의존성 증가: 싱글톤 인스턴스에 의존하게 되어 코드의 유연성 떨어짐
  1. 멀티스레드 이슈: 멀티스레드 환경에서 동기화 문제를 신경 써야 함.

DoorMan을 메모리에 하나만 띄우고자 한다.

 
💡
instance는 static에 new 이하는 heap에 저장
 
package ex04; /** 싱글톤 패턴 * 목적: 문지기를 메모리에 하나만 올리고 싶다 */ // 문지기 public class Doorman { public static Doorman instance = new Doorman(); // instance는 static에 new 이하는 heap에 저장 private Doorman(){ } public void 쫓아내(Animal a){ System.out.println(a.getName()+ "(을)를 쫓아내"); } }
 
 

실행 할 때 하나의 인스턴스 사용

 
package ex04; /** * 풀링 : Pooling (객체를 10개 유지하는 기법) */ public class App { public static void main(String[] args) { Animal tiger = new Tiger(); Doorman doorman = Doorman.instance; doorman.쫓아내(tiger); } }
 
Share article

RottenYogurt's Development Blog