**Data Access Object
**로 DB에 접근해 **직접 데이터를 조회하거나 조작
**하는 기능을 하는 오브젝트
원래는 비주얼 툴에서 조작 가능한 컴포넌트를 말했다. 하지만 지금은 **디폴트 생성자
**를 갖추고,
**프로퍼티를 가진 오브젝트
**를 말한다. 디폴트 생성자를 갖춰야 하는 이유는 리플렉션을 이용하기 위해서이다.
기능은 변하지 않았지만
코드스멜 제거 등 깔끔하고 변화에 대응할 수 있는 코드로 만드는 것
메소드로 중복된 코드를 뽑아내서 정리 -> 메소드 추출 기법
리팩토링은 ****객체지향 개발자에게 꼭 필요한 기법이다.
부모 클래스의 변경
**이 있을 때 **자식 클래스를 함께 수정
**해야 하거나 다시 개발해야할 수 있음