본문 바로가기
디자인 패턴

디자인 패턴 - 싱글톤 패턴 (singleton pattern)

by 이아킹 2021. 4. 18.

싱글톤패턴.pptx
8.53MB

1. 싱글톤 패턴이란?

싱글톤 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고 ,어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴

 

 

대표적인 UML

2. 기본적인 패턴 구현법 (자바)

public class Singleton{ 

private static Singleton uniqueInstance;       →       Singleton 클래스의 유일한 인스턴스 저장하기위한 정적변수

// 기타 인스턴스 변수 

private Singleton () {}                                            생성자가 private ,Singleton에서만 클래스의 인스턴스를 만듦

public static Singleton synchronized getInstance(){

    if(uniqueInstance == null ){                              *게으른 인스턴스 생성 (lazy instantiation)

        uniqueInstance = new Singleton();                 인스턴스가 필요한 상황이 닥치기 전에는 아예 인스턴스를 생성하지 않는다

    }

   return uniqueInstance;

  }

//기타 메소드

}

 

*synchronized

한 스레드가 메소드 사용을 끝내기 전까지 다른 스레드는 기다린다 (멀티 스레딩 문제 해결 방법 )

 

 

3. 더 효율적인 방법이 없을까요???

 

public class Singleton{ 

private static Singleton uniqueInstance = new Singleton();        인스턴스를 필요할 때 생성하지 말고 처음부터 만들어 버린다.

// 기타 인스턴스 변수 

private Singleton () {}                                  

public static Singleton getInstance(){.    →  synchronized 는 사용하지않는다.  성능 100배 저하  !!

   return uniqueInstance;

  }

//기타 메소드

}

3. 쓰임새의 예시 

- 사용자설정,레지스트리설정을 처리하는 객체

DBCP (DataBase Connection Pool), Thread Pool, 캐시, 대화상자,로그 기록 객체 등

-  프린터나 그래픽 카드같은 디바이스를 위한 디바이스 드라이버 등

 

 

4. 사용하는 이유

- 메모리 낭비를 방지

다른 클래스의 인스턴스들이 데이터를 공유하기 쉬움

- 공통된 객체를 여러 개 생성해서 사용할 때 ex) DBCP

- 인스턴스가 절대적으로 한 개만 존재하는 것을 보증하고 싶을 경우

 

5. 단점

- 너무 많은 일과 많은 데이터 공유를 하면 다른 클래스들간의 결합도가 높아져 개방-폐쇄 원칙(open-closed principle)에 위배 된다.

 

'디자인 패턴' 카테고리의 다른 글

state pattern(스테이트 패턴)  (0) 2020.11.17