디자인 패턴

[디자인 패턴] 6. 싱글톤 패턴 복습하기

Song hyun 2024. 9. 25. 16:17
728x90
반응형

[디자인 패턴] 6. 싱글톤 패턴 복습하기

 


1. 싱글톤 패턴의 개념

: 싱글톤 패턴은 특정 클래스의 인스턴스를 하나만 생성하고, 이를 전역적으로 접근할 수 있도록 하는 디자인 패턴이다.

-주요 목적은 시스템 전체에서 공통된 리소스를 공유하거나, 객체 생성을 제한하여 메모리 낭비를 줄이기 위함이다.

 


2. 시나리오 코드 : 싱글톤 패턴 구현해보기

(1) singleton.java

package singleton;

// 1. 정적 변수를 선언한다.
// 2. private 생성자를 선언한다.
// 3. 외부에서 접근할 수 있는 public 정적 메서드를 선언한다.
public class singleton {

    // 1. 유일한 인스턴스를 저장할 변수를 선언한다.(private,static)
    // 많은 개발자들이 싱글톤 패턴의 변수를 instance로 이름짓는다.
    private static singleton instance;

    // 2. 외부에서 객체를 생성 못하도록 private 생성자를 선언한다.
    // 접근지시자가 private이기 때문에, 외부에서 마음대로 생성 불가능.
    private singleton(){}

    // 3. 외부에서 인스턴스 주소를 반환받을 수 있는 메서드를 선언한다.
    // 심화 : 멀티 스레드 환경에서 안전하게 싱글톤 패턴을 구현하기 위해서는 
    public static synchronized singleton getInstance(){
        if(instance == null){
            instance = new singleton();
        }
        return instance;
    }

}

 

(2) MainTest.java

package singleton;

public class MainTest {

    public static void main(String[] args) {
        // 싱글톤 객체를 불러와보자!
        singleton systemSingleton1 = singleton.getInstance();
        singleton systemSingleton2 = singleton.getInstance();

        if(systemSingleton1 == systemSingleton2){
            System.out.println("같은 객체를 바라보고 있습니다!");
        }
    }

}

 


 

 

3. 싱글톤 패턴의 핵심

-싱글톤 패턴은 특정 클래스의 인스턴스를 하나만 유지하는 디자인 패턴임.

-주로 공통된 리소스를 관리하거나, 전역 상태를 관리하는 데 사용됨.

-장점: 메모리 절약, 전역적으로 동일한 인스턴스 사용

-단점: 전역 상태로 인한 의존성 증가, 멀티 스레드 환경에서의 동기화 이슈

 

*객체 풀링(Object Pooling): 자원을 효율적으로 관리하기 위한 디자인 패턴 중 하나. 주로 객체 생성 비용이 크거나, 제한된 자원을 사용할 때 객체의 재사용을 통해 성능을 향상시키는 데 사용된다.

-> ex: HikariCP와 커넥션 풀!

728x90
반응형