Contents
SingletonSingleton
- 시스템 내에서 단 하나만 존재하는 객체
- 객체를 여러 개 만들지 않고 하나만 만들어서 코드에서 공유하여 사용
Q. 문지기를 여러 명 고용하지 말고 한 명만 근무하도록 하려면?
- 현재 코드에서는 Doorman을 여러 개 생성할 수 있음
- Doorman을 오직 하나만 만들어서 해당 Doorman을 공유하도록 만들고 싶음
A : Singleton 활용
- static을 사용하여 메모리 공간에 Doorman을 하나만 생성
- 해당 인스턴스를 공유하여 사용
public class Doorman {
public static Doorman instance = new Doorman(); // main 시작 전 Doorman 메모리에 띄움
// static으로 떠있기 때문에 하나만 생성되어 있음 : Singleton
// 생성자가 private = 외부에서 new 못함
private Doorman() {
}
// 객체의 책임(메서드)
// 책임은 하나의 카테고리로 묶을 수 있어야 함 (여러 카테고리가 엮여 있으면 문제 분석이 어려움)
// 책임은 1개만 있다면 제일 좋음
public void 쫓아내(Animal animal) {
System.out.println(animal.getName() + " 나가!");
}
}
public class App {
public static void main(String[] args) {
Mouse m1 = new Mouse();
Cat c1 = new Cat();
Doorman d1 = Doorman.instance;
d1.쫓아내(m1);
d1.쫓아내(c1);
}
}
Share article