JAVA

JAVA 디자인패턴 - 싱글톤(Singleton) 패턴

TECH 톡마스터 2023. 7. 12.

[ 목차 ]

    JAVA 디자인패턴 - 싱글톤(Singleton) 패턴
    JAVA 디자인패턴 - 싱글톤(Singleton) 패턴

    안녕하세요. 자바에는 다양한 디자인 패턴이 존재하고, 각 패턴은 특정한 문제를 해결하기 위해 설계되었습니다. 적절한 디자인 패턴을 사용함으로써 코드의 품질과 가독성, 유지보수성을 높일 수 있으므로 항상 상황을 고려하여 디자인 패턴을 사용하는 것이 좋습니다. 이를 통해 더 나은 소프트웨어를 개발하고 발전하는 데 기여할 수 있을 것입니다. 그래서 자바에서 흔히 사용되는 패턴들에 대해서 글을 작성해보려 합니다. 그 첫 번째로 싱글톤 패턴에 대해서 알아보겠습니다.

     

    1. 싱글톤 패턴이란?

    싱글톤 패턴은 객체를 한 개만 생성하는 디자인 패턴입니다. 싱글톤 패턴을 사용하면 객체를 전역으로 공유할 수 있으며, 객체를 여러 스레드에서 안전하게 사용할 수 있습니다.

    2. 싱글톤 패턴 구현 방법

    싱글톤 패턴을 구현하는 방법은 다음과 같습니다.

    1. 클래스의 생성자를 private로 선언합니다.
    2. 클래스의 인스턴스를 저장하는 static 필드를 선언합니다.
    3. 클래스의 인스턴스를 생성하는 static 메소드를 선언합니다.

    다음은 자바에서 싱글톤 패턴을 구현한 클래스입니다

    public class Singleton {
    
        private static Singleton instance;
    
        private Singleton() {}
    
        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }

    이 클래스를 사용하려면 다음과 같이 getInstance() 메서드를 호출합니다.

    Singleton singleton = Singleton.getInstance();

    3. 싱글톤 패턴의 장단점

    3.1. 장점

    • 메모리 효율성: 인스턴스가 하나만 생성되기 때문에 메모리를 효율적으로 사용할 수 있습니다.
    • 공유 자원 관리: 자원이나 설정, 데이터베이스 연결 등 공유가 필요한 자원을 효율적으로 관리할 수 있습니다.
    • 인스턴스 제어: 클래스 인스턴스 생성을 제어할 수 있으며, 초기화 과정을 관리할 수 있습니다.
    • 정적 데이터 관리: 싱글턴 패턴을 사용해서 전역적인 데이터를 저장, 처리 및 관리할 수 있습니다. 이를 통해 전체 애플리케이션에서 일관된 정보를 유지할 수 있습니다.

    3.2. 단점

    • 전역 상태 유발: 전역적으로 사용 가능한 인스턴스가 상태 변화를 쉽게 유발할 수 있습니다.
    • 테스트 어려움: 상태 변화로 인해 테스트하기 어렵고, 단위 테스트 시 서로 영향을 줄 수 있습니다.
    • 객체 지향 원칙 위반: 전역 상태를 이용해 결합도를 높이므로 객체 지향 원칙을 위반할 수 있습니다.
    • 멀티스레딩 이슈: 동시성 문제로 인해 여러 스레드에서 동시에 싱글턴 객체를 공유할 때 문제가 발생할 수 있습니다.

    4. 싱글톤 패턴의 사용 예시

    싱글톤 패턴은 다음과 같은 경우에 사용됩니다.

    • 데이터베이스 연결
    • 네트워크 연결
    • 파일 핸들러 로깅
    • 캐싱
    • 스프링 프레임워크

    2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴

     

    디자인패턴 - 팩토리(Factory) 패턴

    2023.07.12 - [JAVA] - 디자인패턴 - 싱글톤(Singleton) 패턴 [ 목차 ] 안녕하세요. 이번에는 팩토리(Factory) 패턴에 대해서 알아보도록 하겠습니다. 1. 팩토리(Factory) 패턴 이란? 팩토리 패턴은 객체 생성을

    tech.dj-tiger.com

    2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴

     

    디자인패턴 - 팩토리(Factory) 패턴

    2023.07.12 - [JAVA] - 디자인패턴 - 싱글톤(Singleton) 패턴 [ 목차 ] 안녕하세요. 이번에는 팩토리(Factory) 패턴에 대해서 알아보도록 하겠습니다. 1. 팩토리(Factory) 패턴 이란? 팩토리 패턴은 객체 생성을

    tech.dj-tiger.com

    2023.07.12 - [JAVA] - 디자인패턴 - 어댑터(Adapter) 패턴

     

    디자인패턴 - 어댑터(Adapter) 패턴

    [ 목차 ] 안녕하세요. 오늘 알아볼 패턴은 어댑터(Adapter) 패턴입니다. 1. 어댑터(Adapter) 패턴 이란? 어댑터 패턴은 디자인 패턴 중 하나로, 서로 다른 인터페이스를 가진 클래스 또는 객체를 협력할

    tech.dj-tiger.com

    2023.07.12 - [JAVA] - Java 디자인패턴 - 옵저버(Observer) 패턴

     

    댓글

    💲 추천 글