다양한 방식으로 로직을 처리할 수 있다. 그 중 대표적인 것은 트랜잭션 스크립트 패턴과 도메인 모델 패턴일 것이다. 트랜잭션 스크립트 패턴은 대부분의 애플리케이션에서 사용할 것이라고 예상되는데, 엔티티보다는 서비스 계층에서 비즈니스 로직을 처리한다. 반대로 도메인 모델 패턴은 엔티티에서 비즈니스 로직을 처리하며, 이 패턴에서 서비스 계층은 엔티티에 필요한 요청을 위임하는 역할을 한다. 이는 객체 지향의 특성을 적극적으로 활용하는 것이다. 두 패턴은 둘 중 하나만 선택해야 하는 것이 아니라 같이 활용할 수 있는 패턴이므로 상황에 맞게 쓰면 된다.
개인적으로는 트랜잭션 스크립트 패턴을 주로 사용했으며, 선호하는 방식이기도 하다. 그러나 도메인 모델 패턴을 접하고 난 뒤에는 각각의 장단점이 있으므로 한 가지 방식만 고집하는 것은 좋지 않다는 생각이 들었다.
도메인 모델 패턴을 공부하고자 한다면 '도메인 주도 개발 시작하기(최범균)'라는 책을 추천한다. 사실 다 읽지는 않았고 반쯤 읽었다. 나중에 개별적으로 이 책에 대한 리뷰를 남길 예정이므로 간략하게 적어보자면, 궁극적으로 내 코드가 어떤 방식으로 작성되어야 할지 지향점을 짚어주는 듯한 책이었다. 이는 도메인 패턴에만 국한된 이야기는 아니다. 물론 나처럼 초급자보다는 어느정도 코드를 작성할 줄 알되, 조금 더 깔끔한 방식으로 코드를 작성하고자 하는 욕망이 드는… 연차의 독자에게 추천한다. 입문서에 속한 책이므로 설명은 친절하지만 복잡한 내용을 다루는 경우가 있어서 조금 어려운 책이기도 하다.
'엔터프라이즈 애플리케이션 아키텍처 패턴(마틴 파울러)'라는 책에 두 패턴에 대해 자세한 설명이 나와있는 듯하다. 사실 패턴에 대해 설명하기 조금 복잡하기도 하고, 정확하게 말할 수도 없을 것 같아서 찝찝하더라도 이 글은 이런 식으로 마무리해야 할 것 같다. 추후 좀 더 지식을 쌓아 멋진 모습으로 돌아오기를 바라며^^...!
트랜잭션 스크립트 패턴
https://martinfowler.com/eaaCatalog/transactionScript.html
도메인 모델 패턴
https://martinfowler.com/eaaCatalog/domainModel.html
'설계' 카테고리의 다른 글
화이트박스 테스트(White Box Test)와 블랙박스 테스트(Black Box Test) (0) | 2024.02.05 |
---|---|
모듈(Module) (0) | 2024.02.02 |
객체 지향 프로그래밍 (2) | 2023.12.07 |