Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

인스턴스 생성 패턴 - Singleton Pattern 본문

Java/디자인 패턴

인스턴스 생성 패턴 - Singleton Pattern

Seung__ 2021. 11. 4. 21:57

1. Singletone Pattern이란?


  • 자바에서 객체를 사용하기 위해서는 생성해야 함.
  • 매번 new를 하면 새로운 객체가 생성됨..
  • 클래스의 인스턴스는 오직 하나임을 보장하여 이 인스턴스에 접근할 수 있는 방법을 제공하는 패턴

 

 

2. 의도(intent)와 동기(Motivation)


  • 클래스에서 만들 수 있는 인스턴스가 오직 하나이고, 이에 대한 접근을 어디에서든지 하나로만 통일하여 제공.
  • 어떤 클래스의 경우에는 정확히 하나의 인스턴스만을 갖도록 하는 것이 중요하다.
    • 한 회사에서는 하나의 회계 시스템을 운영
    • Database와 연결하는 connection은 여러개 일 수 있지만 connection pool은 한 개
  • 자바에서는 전역 변수가 존재하지 않으므로 인스턴스가 하나만 존재하도록 설계해야 하고
    이에 접근 하는 방법을 제공.

 

 

 

3. Class Diagram


 

 

4. 객체 협력 (collaborations)


  • 클라이언트는 Singleton 클래스에 정의된 public 오퍼레이션을 통해서
  • 유일하게 생성되는 Singleton 인스턴스에 접근할 수 있다.

 

5. 중요한 결론 (consequence)


  • 유일하게 존재하는 인스턴스로의 접근을 통제할 수 있다.
  • 전역 변수를 사용함으로써 발생할 수 있는 오류를 (C++ 의 경우) 줄 일수 있다.

 

 

 

6. 예제


  • 유일한 인스턴스 선언
  • 생성자 못쓰게 막기
  • 이처럼 인스턴스가 딱 하나만 존재하게 만들 수 도 있고 딱 몇개만 존재하도록 만들 수 도 있다.
public class ConnectionPool {

    //유일한 인스턴스 선언
    private static ConnectionPool instance  = new ConnectionPool();

    //생성자 못쓰게 막기
    private ConnectionPool() {
    }

    public static ConnectionPool getInstance() {

        if (instance == null){
            instance = new ConnectionPool();
        }
        return instance;
    }
}

 

 

 

7. GitHub : 211104 Singleton Pattern


 

GitHub - bsh6463/designPattern

Contribute to bsh6463/designPattern development by creating an account on GitHub.

github.com

 

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

인스턴스 생성 패턴 - Abstract Factory Pattern  (0) 2021.11.04
인스턴스 생성 패턴 - Prototype Pattern  (0) 2021.11.04
클래스 다이어그램  (0) 2021.11.04
SOLID 원칙  (0) 2021.11.04
디자인 패턴  (0) 2021.11.03
Comments