티스토리 뷰
Goal
- Singleton pattern에 대해 이해한다.
- Singleton parttern의 생성 방법을 코드 예제를 통해 이해한다.
1. Singleton pattern
- 객체지향으로 프로그램을 유지보수에 용이하게 설계하기 위한 23가지 디자인 패턴의 일종으로. new를 통해 인스턴스를 생성하지 않고 메서드를 통해 인스턴스를 생성한다.
- 단 하나만 존재해야 하는 인스턴스가 필요할 때, 싱글톤 패턴을 생성한다. ex) 시간대 별 날짜, 소속된 직장 등
- C언어에서는 global이라는 변수를 사용하여 구현하고 Java에서는 클래스 안에서 구현한다.
- Singleton pattern을 통해 생성되는 참조변수가 하나의 인스턴스만 참조할 수 있도록 클래스를 디자인한다.
1-1 Singleton pattern 생성 방법
- 생성자는 private으로 선언하여, 외부에서 인스턴스를 생성하는 것을 제어한다.
- static으로 유일한 인스턴스를 생성한다.
- 외부에서 유일한 인스턴스를 참조할 수 있는 public static getInstance() 메서드를 구현하여, 미리 생성한 인스턴스를 변수에 대입한다.
예제 1) Singleton pattern 구현
public class Company {
private static Company instance = new Company(); //private의 유일한 인스턴스를 만들어줌.
private Company() {} // 생성자가 있기 때문에, 컴파일러가 생성자를 제공해주지 않지만, private로 선언했기 때문에 외부에서 생성자에 접근할 수 없게되어 인스턴스를 생성할 수 없는 상태가 됨.
public static Company getInstance() {
if (instance == null) {
instance = new Company();
}
return instance;
}
}
예제 2) Singleton pattern으로 인스턴스 생성
//유일한 인스턴스를 만드는 싱글톤 패턴.
public class CompanyTest {
public static void main(String[] args) {
Company company = Company.getInstance();
// = Company company = new Company();
Company company2 = Company.getInstance(); //새로운 인스턴스를 생성하는게 아닌, 기본에 만들어진 인스턴스를 대입함
System.out.println(company);
System.out.println(company2); // company와 company2는 동일한 address를 지니고 있음.
// 대표적인 싱글톤 패턴의 예로, Calendar 객체가 있다.
Calendar calendar = Calendar.getInstance();
}
}
'Java > Java 올인원 패키지' 카테고리의 다른 글
11. 객체 배열, 다차원 배열 (Java) (0) | 2020.03.15 |
---|---|
10 . 배열이란? (Java) (0) | 2020.03.15 |
8. static 변수, 메서드 (Java) (0) | 2020.03.14 |
7. 객체 간 협력 (0) | 2020.03.14 |
6. This (Java) (0) | 2020.03.14 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- 20200406
- 20200502
- 20200415
- 20200423
- 20200428
- 20200319
- 생활코딩리눅스
- 20200512
- chapter7
- 20200424
- likelion
- 20200504
- 20200622
- chapter8
- 20200417
- 20200330
- 20200429
- 20200624
- 20200421
- 20200427
- 20200425
- 20200317
- 20200420
- 20200403
- 20200510
- 20200804
- 20200413
- 백준
- 20200503
- 20201204
- Total
- Today
- Yesterday