해당 게시물은 인프런 "Java/Spring 주니어 개발자를 위한 오답노트" 강의를 참고하여 작성한 글 입니다.
1. VO vs DTO vs Entity vs DAO
- VO는 불변해야하며, 항상 유효해야한다.
- DTO는 모든 속성을 노출하며, 데이터 전달에 사용되는 객체이다.
- Entity는 유일한 식별자가 있고, 수명주가기 있으며, 저장소에 저장함으로써 지속성을 가진다.
- DAO는 DB에 접속, 명령 전송을 전담하는 클래스이다. Repository 객체들이 DAO라고 볼 수 있다.
참고 : DTO란 무엇인가, VO와의 비교
2. 디미터 법칙과 TDA원칙
-
기존코드
-
디미터의 법칙 적용
디미터의 법칙은 다른 객체가 어떠한 자료를 갖고 있는지 속사정을 몰라야 한다는 것을 의미하며, 이러한 이유로 Don’t Talk to Strangers(낯선 이에게 말하지 마라) 또는 Principle of least knowledge(최소 지식 원칙) 으로도 알려져 있다.
참고: https://mangkyu.tistory.com/147
- TDA원칙 적용
TDA원칙은 객체와 객체가 협력하는 경우, 다른 객체에게 정보를 요구하지 말고 그냥 행위하도록 시키라는 의미이다. 즉 정보 은닉의 중요성을 강조하는 원칙이라고 할 수 있다.
참고: https://effectiveprogramming.tistory.com/entry/Tell-dont-ask
3. 행동 위주의 사고를 하라
데이터위주의 사고보다는 행동위주의 사고를 해야한다. 그것이 객체지향이다.
참고 : https://velog.io/@mino_dev/%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%99%80-%ED%96%89%EB%8F%99-%EC%A4%91%EC%8B%AC-%EC%82%AC%EA%B3%A0%EB%B0%A9%EC%8B%9D
4. OOP
OOP에서 제일 중요한 것은 역할, 책임, 협력 3가지이다. 기억하자.
이 글에서는 객체지향 프로그래밍의 핵심 개념과 원칙에 대해 알아봤다. VO, DTO, Entity, DAO의 차이점을 이해하고, 디미터 법칙과 TDA원칙으로 객체 간 상호작용을 어떻게 설계해야 하는지 배웠다. 또한, 데이터보다는 행동을 중심으로 생각하는 행동 위주 사고의 중요성을 강조했다. 결국, 객체지향적인 코드 작성은 더 나은 소프트웨어 엔지니어가 되는 여정의 일부라고 생각한다.