review
Singleton Pattern I
shiherlis
2022. 9. 5. 23:46
1개의 instance만 사용하는 singleton pattern
private static Company instance = new Company();
// *
private Company() {
// **
}
public static Company getInstance() {
if (instance == null) {
instance = new Company();
}
return instance;
}
- * 하나의 인스턴스만 허용하기 위해서 외부접근비허용(private) 중복방지(static) 선언
- **외부에서 생성자 호출 비허용(private)
- 외부에서 instance를 사용하기 위해서 getInstance 생성
- instance 선언만 하고 초기화를 해주지 않았기 때문에 초기화 필요
- instance가 null 인지 확인 후, null이라면 생성
- instance가 null 일 경우, 새로운 를 생성하여 instance를 반환하고,
instance가 null 이 아닐 경우(이미 호출 되어 생성된 적이 있을 경우),
이미 생성되어 있는 instance를 그대로 반환
- 확인
같은 인스턴스를 통한 두 개의 서로다른 참조변수 생성
Company company1 = Company.getInstance();
Company company2 = Company.getInstance();
- getInstance() 메소드를 정의할 때 이미 new Company()를 해 주었기 때문에
- new를 중복사용하지 않음
- 한 번의 new를 사용하기 때문에 메모리 사용을 절감할 수 있음
Object 클래스의 equals() : 주소 비교 - True
company1.equals(company2)
== 연산자 : 주소값(참조번지) 비교 - True
company1 == company2
+ 하나의 인스턴스(동일한 주소값)를 가리키기 때문에 setter를 통해 변수 선언시 값이 같아짐.
ex)
company1.setId(2022);
company1.getId();
company2.getId();
- 두 Id는 같은 값이 반환됨
- 이를 이용하여 시리얼넘버, 학번과 같이 중복되서는 안되는 케이스에 유용하게 사용가능