JAVAIARY

Singleton Pattern I 본문

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는 같은 값이 반환됨
  • 이를 이용하여 시리얼넘버, 학번과 같이 중복되서는 안되는 케이스에 유용하게 사용가능

 

'review' 카테고리의 다른 글

학점 부여 프로그램  (1) 2022.10.03
linkedList 노드의 추가와 삭제  (0) 2022.09.09
Singleton pattern II  (0) 2022.09.07
ArrayList 출력 방법  (0) 2022.09.04