Closed JisuPark-dev closed 1 month ago
public class ReservationService{
public void requestReservation(HospitalJobDto hospitalJobDto) {
private final HospitalService hospitalService;
private final ConsultGroupSerivce consultGroupSerivce;
private final ConsultService consultService;
private final FavoriteService favoriteService;
// 병원 주소록 조회 및 생성 or 업데이트
hospitalService.hospitalPatientGenerator(hospitalJobDto);
// 진료 그룹 INSERT
consultGroupSerivce.insertConsultGroup(hospitalJobDto);
// 진료 INSERT
consultService.insertConsult(hospitalJobDto);
// 병원 즐겨찾기 추가
favoriteService.addFavoriteHospital(hospitalJobDto);
}
}
이런 코드는 그럼 서비스에 서비스를 붙인 것 뿐일까요. 만약 여기서 정말로 책임 지향으로 가고 싶다면, 각각의 도메인 객체가 책임을 가져가는게 맞는걸까요.
가령
public class ReservationService {
private Hospital hospital;
private ConsultGroup consultGroup;
private Consult consult;
private Favorite favorite;
@Override
public void requestReservation(HospitalJobDto hospitalJobDto) {
// 병원 주소록 조회 및 생성 or 업데이트
hospital.create(hospitalJobDto);
// 진료 그룹 INSERT
consultGroup.insert(hospitalJobDto);
// 진료 INSERT
consult.insert(hospitalJobDto);
// 병원 즐겨찾기 추가
favorite.add(hospitalJobDto);
}
}
이런식으로 말이죠
spring프로젝트의 경우 대부분 controller, service, repository로 계층화된 코드를 작성하는게 원칙인데 만약 이에 따를 경우 책임이 어느정도 분리된 코드라고 봐야할 까요? 아니면 좀 더 책임이 분리된 코드를 만들려면 어떻게 해야하는 걸까요? 최근 작성한 코드를 리팩토링해보면서 예시를 들어봐도 좋을 것 같습니다.