가끔 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야하는 경우가 있다.
예를 들어 회원가입과 관련된 기능들을 구현한다하면
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 |