Singleton pattern
생성자가 여러번 호출해도 실제 생성되는 객체는 한 개
Spring Framework에서 제공하는 빈(bean) 관리는 싱글턴 패턴을 구현 어노테이션을 사용해 빈을 정의
package ch04;
public class App {
public static void main(String[] args) {
Doorman doorman = Doorman.instance; // 힙에 생성
Doorman doorman2 = Doorman.instance;
// hashCode
// 알고리즘에 의해 생성된 객체를 식별하는 하나의 정수 값
// 단방향 암호. 충돌확률 낮음
// 레퍼런스 자료 사이즈 측정 불가 -doorman데이터 크기 모름
// 두 도어맨 동일 여부 확인을 위해 hashCode 출력
System.out.println(doorman.hashCode());
System.out.println(doorman2.hashCode());
Cat cat = new Cat();
Mouse mouse = new Mouse();
doorman.쫓아내(cat);
doorman.쫓아내(mouse);
}
}
package ch04;
// 클래스 로딩 시 한 번만 인스턴스 생성되고, 외부 접근이 쉬워짐
public class Doorman {
// Doorman의 유일한 인스턴스 유지 및 싱글턴 핵심 개념 달성(단일 인스턴스)
static Doorman instance = new Doorman();
// public을 private 생성자 변경
// 외부 인스턴스 생성 불가로 설정하여 단일 인스턴스 유지
private Doorman() {}
public void 쫓아내(Animal animal) {
System.out.println(animal.getName() + " 쫓아내");
}
}
package ch04;
public abstract class Animal {
public abstract String getName();
}
package ch04;
public class Mouse extends Animal {
private String name = "쥐";
public String getName() {
return name;
}
}
package ch04;
public class Cat extends Animal {
private String name = "고양이";
public String getName() {
return name;
}
}
Share article