[Java] - 싱글톤

가끔 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야하는 경우가 있다.

 

예를 들어 회원가입과 관련된 기능들을 구현한다하면


1.데이터를 저장할 용도 클래스
- 아이디, 이름, 비밀번호
 : 이러한 용도의 클래스는 회원마다 독립적인 객체이므로 싱글톤으로하면안된다.

 (싱글톤으로하면 모든 회원이 같은 정보가 들어가기때문에) 

2.로직을 처리할 용도 클래스
-회원가입
-로그인
-로그아웃
-회원정보수정

이런 것들은 싱글톤으로 구현한다 왜냐? 로그인성공하면 true 아니면 false인데 객체를 매번생성할필요없어 홍길동이 쓰던 김길동이 쓰던 그러니까 독립적으로 쓸필요가없기 때문이다.


그래서 싱글톤으로 구현한다

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
package chapter06;
 
public class Single_ton {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
    }
    
    private static Single_ton singleton = new Single_ton(); //외부에서 접근이 되면 안되므로 private 선언
 
    //생성자 : 외부에서 생성안되도록 생성자도 private
    
    private Single_ton() {
        
    }
    
    // 외부에서 객체를 얻도록 하기
    static Single_ton getInstance() {
        return singleton;
    }
    
    static void print() {
        System.out.println("메소드 출력");
    }
 
}
 
cs

위와 같이 싱글톤으로 클래스를 만들고 아래와 같이 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package chapter06;
 
public class Single_ton_example {
 
    public static void main(String[] args) {
//        Single_ton s = new Single_ton();
//        Single_ton.instance;
        
        Single_ton s1 = Single_ton.getInstance();
        Single_ton s2 = Single_ton.getInstance();
        Single_ton s3 = Single_ton.getInstance();
        
        s1.print();
        s2.print();
        s3.print();
        
        System.out.println(s1==s2); // 같은 객체이므로 같음 아무리 getInstance로 여러개의 개체를 가져온것처럼해도 한가지로 취급함
        
        
    }
 
}
 
cs

 

'Java' 카테고리의 다른 글

[Java] - Getter, Setter 메소드  (0) 2020.09.21
[Java] - 접근제한자  (0) 2020.09.21
[프로그래머스] - 약수의 합 (java)  (0) 2020.09.18
[Java] - 메소드 오버로딩  (0) 2020.09.18
[Java] - 생성자, 생성자 오버로딩  (0) 2020.09.17