기본 생성자 (툴이나 프레임워크에서 Reflection을 이용해 생성하기 때문에 필요)
프로퍼티 (Getter, Setter 메소드로 수정, 조회)
JVM이 프로그램을 실행할 때 클래스 파일을 찾는 기준이 되는 경로
중복 제거는 말 그대로 중복되는 코드를 메서드 등으로 빼놓는 것이고
관심사의 분리는 쉽게 말해 여러 기능을 각각 분리하는 것이다.
1. 템플릿 메서드 패턴 -> 추상클래스 기능의 일부를 서브클래스에서 구현하게 하는 패턴
2. 팩토리 메서드 패턴 -> 수퍼클래스의 오브젝트의 구체적인 생성 방법을 서브클래스가 결정하게 하는 패턴
3. 전략 패턴 ->
컨텍스트의 전략을 인터페이스를 이용해 통째로 분리하는 패턴.
컨텍스트를 이용하는 클라이언트가 전략을 제공
높은 응집도와 낮은 결합도를 적용해 수정에는 닫혀잇고 확장에는 열려잇게 디자인하는 원칙
오브젝트가 자신이 사용할 오브젝트를 결정하지 않고 자신도 언제 어디서 생성될지 모름. 능동 -> 수동
Factory에서 결정.
스프링에는 BeanFactory가 있는데 스프링 빈들을 생성하고 관계를 결정해줌.