싱글톤 패턴이란?
- 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴
- static변수, 메서드를 활용하여 구현할 수 있음
** 디자인 패턴?
객체지향 프로그램에서 어떻게 하면 좀 더 효율적으로 객체지향 프로그램을 구현해서 추후 유지보수 하는 데에서 수정이 쉽고(확장성이 좋고) 좀 더 객체지향에 적합하게 코딩을 할 것인가에 대해 여러가지 패턴으로 정리해 놓은 것. 23가지 정도 있음. 그 중 하나가 싱글톤 패턴!
ex) 하나의 회사가 있고, 직원이 여러명인 상황
- 싱글톤 패턴 코드
1
2
3
4
5
6
7
8
9
10
11
|
public class Company {
private static Company instance = new Company();
private Company() {}
// 외부에서 사용할 수 있도록 public으로 getter 생성
public static Company getInstance() {
if(instance == null) instance = new Company();
return instance;
}
}
|
cs |
- 사용하는 코드 : new를 사용하여 인스턴스를 새로 생성하는것이 아니고, static으로 이미 만들어진 인스턴스를 가져가다 쓰는 것. 따라서 클래스를 활용하여 호출하고, 호출된 Company의 주소값은 동일함!(같은것을 가져다가 쓰기 때문)
1
2
3
4
5
|
public static void main(String[] args) {
Company company1 = Company.getInstance;
Company company2 = Company.getInstance;
// company1 과 company2의 주소값은 동일함!
}
|
cs |
=> Company는 외부에서 생성할 수 없고, private으로 내부에서 생성되어 있으며, getInstance() 메서드로만 제공되고 있다. 따라서 getInstance()로 내부에서 생성되어있는 Company만 사용할 수 있다. 이것이 싱글톤 패턴이다!
유일한 객체를 제공할 때 싱글톤 패턴을 쓴다.
대표적인 예로 java.util.Calendar 가 있다. 아래 코드처럼 불러와서 사용한다.
1
|
Calendar calendar = Calendar.getInstance();
|
cs |
출처 : 패스트캠퍼스
'Java' 카테고리의 다른 글
[Java기본] 상속1 - 문법과 사용예제 (0) | 2021.04.29 |
---|---|
[Java기본] ArrayList-객체배열 (0) | 2021.04.28 |
[Java기본] Array - 배열에 대하여 (0) | 2021.04.27 |
[Java기본] static 변수 (0) | 2021.04.27 |
[Java기본] 객체 자신을 가리키는 this (0) | 2021.04.27 |