Post

Java에서 싱글톤 패턴 구현하기: 단 하나의 인스턴스만 생성하는 방법

싱글톤 패턴이 뭘까??


싱글톤 패턴은 Spring 에서 Bean 들이 가지는 형태이다. 그래서 가장 먼저 정리해보려고 한다! 싱글톤 패턴은 전체 통틀어서 단 하나의 Instance 만을 가지는 형태이다 그러니까 어디에서든 해당 패턴이 적용된 class 안의 어떤 변수에 접근하면 그 값은 같다는 의미이다!

코드로 확인해보자!


싱글톤 패턴을 먼저 만들어 보면 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class SingletonPattern {

    private static SingletonPattern instance = new SingletonPattern(); // static 으로 선언한다.
    private int variable;
    
    private SingletonPattern() {
        this.variable = 0;
        // 생성자를 호출하게 되면 2개의 instance 가 생기기때문에 private 으로
        // 오직 내부에서만 호출 가능 하도록 한다.
    }

    public static SingletonPattern getInstance() {
        return instance;
    }

    public void plusOneVariable() {
        variable = variable + 1;
        return;
    }

    public int getVariable() {
        return variable;
    }
}

이제 위의 class 를 사용하는 곳이다.

1
2
3
SingletonPattern sp = SingletonPattern.getInstance();
sp.plusOneVariable();
sp.getVariable();

어느곳에서든 하나의 객체가 생성이 되어있고 어디에서든 getVariable 을 하면 같은 값을 가져올수 있다

어떤 장점이 있을까?


우선 어떤 데이터를 공유 할 수 있다는 장점이 있다. 위에서의 variable 은 어디에서든 가져 올 수 있다! 그리고 단 하나의 class 만을 생성하기 때문에 메모리 사용량이 적다고 할 수 있다.

어떤 단점이 있을까?


variable 이 모두가 접근이 가능하기 때문에 race condition 이 생길수가 있다! 따라서 synchronize 를 적절히 사용해 주어야한다! 또한 코드가 길어지기도 한다. 하지만 이는 spring 에서는 간단히 singleton 을 만들수 있으니까 괜찮다!

This post is licensed under CC BY 4.0 by the author.

© 병욱. Some rights reserved.