인스턴스를 너무 많이 생성하면 메모리가 부족해지고 성능이 안 좋아질 수 있다.
플라이웨이트 패턴은 객체를 간단하게 만드는 패턴인데
자주 바뀌는 속성과 그렇지 않은 속성들을 구분하여 자주 바뀌는 속성만 추려내어 별도의 immutable한 객체로 만들어 해당 속성을 가지는 객체에 대하여 갈아끼워주는 패턴이다. 이때 해당 immutable한 객체를 만드는 팩토리도 만들어줘야 한다.
Integer a = Integer.valueOf(100);
Integer b = Integer.valueOf(100);
System.out.println(a == b); // true
Integer c = Integer.valueOf(2000);
Integer d = Integer.valueOf(2000);
System.out.println(c == d); // false
자바에서 -128 ~ 127 까지의 Integer 객체는 항상 캐싱이 된다..!