클래스
- map 의 computeIfAbsent : 있으면 있는거 꺼내고 없으면 생성
- 캐싱 명칭 : cache, pool 등등
- WeakHashMap → 나중에 GC 의 대상이 되도록 명시
- 메서드가 많아질 수록 단일 책임 원칙은 위반하지만 생성자는 많아질수록 클라이언트가 클래스를 유연하게 사용할 수 있다.
- 중복 코드를 방지하고 설계를 더 간결하게 만들 수 있기 때문에 유지보수성이 향상된다.
- 필요한 생성자만 만들자..
상속
- 단점 : 상위 클래스를 수정하는 상황이 생기면 그 하위 클래스도 모두 영향을 받는다, 현재 클래스에서 원치않은 메소드도 상속받아야 한다, 내가 예상한대로 안돌아갈 수 있음(ex. ArrayList 의 addAll 은 add 를 호출하므로 addAll 과 add 를 오버라이딩하면 다르게 실행될 수 있음)
- final 클래스로 생성하면 상속을 방지할 수 있음
조합
- 초기에는 재사용성을 위해 상속을 받았지만 지금은 유연성이 더 중요하여 지양하게 되었다.
가변객체와 불변객체