자바/자바 기본

싱글톤(Singleton)/getInstance()

은은하게미친자 2022. 7. 25. 23:56
728x90

싱글톤?

어떤클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴.

생성자의 호출이 반복적으로 이뤄져도 실제로 생성되는 객체는 최초 생성된 객체를 반환해주는것.

한번의 객체 생성으로 재사용이 가능하기떄문에 메모리 낭비를 방지 할수있으나,

너무많은 일 처리와 데이터 공유작업시 싱글톤을 사용하는 다른 클래스 들은 서로 결합도(의존도)가 높아질 수 있음.

+ 특별히 메소드명이 getinstance가 아디어도 상관없으며 getinstance 싱크로나이즈드 처리하는

경우도 많이 있음.

 

 

예제

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
32
33
34
35
36
37
38
package Capter10;
 
class Class1{
    private static Class1 instance; //하나의 인스턴스생성
    private Class1() {
        // 생성자 private 외부에서 설정 못하도록함.
    }
    
    //외부에서 인스턴스를 사용할 수 있도록 public으로 선언
    public static Class1 getInstance() {
        //instance가 null이라면 new를 생성
        if(instance == null) {
            instance = new Class1();
        }
        return instance;
    }
}
 
 
public class Singletone {
 
    public static void main(String[] args) {
        Class1 c1 = Class1.getInstance();
        Class1 c2 = Class1.getInstance();
        
        if(c1 == c2) {
            System.out.println("같은객체");    
        }
        else {
            System.out.println("다른객체");
        }
 
    }
 
}
 
 
 
cs

 

실행결과
같은객체

 

 

https://gmlwjd9405.github.io/2018/07/06/singleton-pattern.html

 

[Design Pattern] 싱글턴 패턴이란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

728x90