객체란 속성과 기능을 갖춘 것
클래스란 속성과 기능을 정의한 것
인스턴스란 속성과 기능을 가진 것 중에 실체 하는 것
하나만 생성(인스턴스)해야할 객체를 위한 패턴
개발중인 시스템에서 객체에 접근할 수 있는 클래스를 만들자!
public class SystemObject {
static private SystemObject instance;
private int count;
private SystemObject() {
}
public static SystemObject getInstance() {
// null 이면 객체 생성
if (null == instance) {
instance = new SystemObject();
}
return instance;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
main class 를 만들어서 직접 테스트를 해보았다.
public class Main {
public static void main(String[] args) {
SystemObject o1 = SystemObject.getInstance();
o1.setCount(5);
System.out.println("count :"+o1.getCount());
SystemObject o2 = SystemObject.getInstance();
System.out.println("count :"+o2.getCount());
System.out.println(o1);
System.out.println(o2);
}
}
직접 객체를 디버그나 로그로 보았을때 두가지다 같은 객체를 참조 하고 있었다.