객체
- 객체는 동작을 공개하고 자료를 숨긴다. 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉽지만 새 동작을 추가하기는 어렵다.
- 새로운 자료 타입을 추가하는 유연성이 필요할 때 적합하다.
자료 구조
- 별다른 동작 없이 자료를 노출한다. 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다.
- 새로운 동작을 추가하는 유연성이 필요할 때 적합하다.
참고: 로버트 C.마틴, 클린 코드, 박재호, 이해영 역