일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 코딩테스트
- 시큐리티
- sql
- 시큐리티 로그인
- html
- css
- 목록
- security
- 시큐리티로그인
- 프로그래머스
- 2차원배열
- 스프링 부트
- JAVA11
- 시큐리티 로그아웃
- Spring boot
- input태그
- 싱글톤
- programmers
- 리눅스
- 로그인
- 소스트리
- codingtest
- java
- springboot
- 반복문
- javascript
- Linux
- StyleSheet
- gradle
- springSecurity
Archives
- Today
- Total
JAVAIARY
Singleton Pattern I 본문
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는 같은 값이 반환됨
- 이를 이용하여 시리얼넘버, 학번과 같이 중복되서는 안되는 케이스에 유용하게 사용가능
'review' 카테고리의 다른 글
학점 부여 프로그램 (1) | 2022.10.03 |
---|---|
linkedList 노드의 추가와 삭제 (0) | 2022.09.09 |
Singleton pattern II (0) | 2022.09.07 |
ArrayList 출력 방법 (0) | 2022.09.04 |