inblog logo
|
RottenYogurt's Development Blog

    디자인 패턴 - 싱글톤 패턴

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

    싱글톤 패턴

     
    싱글톤 패턴(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
    Contents
    싱글톤 패턴

    RottenYogurt's Development Blog

    RSS·Powered by Inblog