: 비즈니스 로직을 처리하는 두가지 패턴 비교
- (스프링 관점) view나 persistence layer를 이야기하는 것이 아니고, Domain layer를 구성하는 여러가지 방법론 중 절차지향과 객체지향에 관한 것
정답이 정해져있는 것이 아니라 상황에 맞게 트레이드 오프를 따져야 하고, 변화에 더욱 초점을 두려면 객체지향적으로 리팩토링하는 절차가 필요하다.
Transaction Script(function, logic 중심)
: 트랜잭션 단위로 스크립트를 작성하는 것. 절차지향적이다.
- 보통 이 방식은 ERD(데이터베이스)를 먼저 구성하기 마련이다. 이후, 자연스럽게 테이블과 클래스가 1:1로 맵핑되고, “DB에 무엇이 저장될 것인가?”의 관점으로 클래스의 프로퍼티가 구성된다.
- 중앙 집중식 제어 스타일: 한군데에서 모든 제어를 다 한다.
- 구현이 쉽고 단순해 읽기 편하고, 따라서 개발자들에게 익숙하다.
- 유지보수 측면에서 어려워질 수 있다.
도메인 모델(비즈니스 객체 자체 중심)
: 객체지향 설계에 가깝다.
- CRC card - Candidate(객체), Responsibility(책임), Collaborator(협력). 종이 한장으로 표현하면 편하다.
- 기준이 없어 애매할 수 있다. 어떠한 책임이 누구에게 있는가?는 항상 모호한 기준일 수 있다.
- 위임식, 분산식 제어 스타일: 절차지향의 중앙집중식 제어 스타일과는 다르게 모든 것을 객체로 찢어놓는다.
- 오히려 읽기 어렵다. 그러나 유지보수에는 더 도움이 될 수 있다.
Reference)
객체지향의 사실과 오해 조영호님 강의