계산 로직 도메인 서비스
public class DiscountCalculationService {
public Money calculateDiscountAmounts(
List<OrderLine> orderLines,
List<Coupon> coupons,
MemberGrade grade) {
// ...
}
}
public class OrderService {
private DiscountCalculationService discountCalculationService;
@Transactional
public OrderNo placeOrder(OrderRequest orderReq) {
// ...
Order order = new Order(orderReq.getInfos(), discountCalculationService);
// ...
}
}
설문 조사를 생성할 때 사용자가 생성 권한을 가진 역할인지 확인하기 위해 역할 관리 시스템과 연동하는 예제
public interface SurveyPermissionChecker {
boolean hasUserCreationPermission(String userId);
}
public class CreateSurveyService {
private SurveyPermissionChecker permissionChecker;
public Long createSurvey(CreateSurveyRequest req) {
if (!permissionChecker.hasUserCreationPermission(req.getRequestorId()) {
throw new NoPermissionException();
}
}
}