我正在创建一个试用DDD的应用程序 该应用程序是租电影,我的课程是:
class Movie{
String title
String descrition
}
class Customer{
String username
}
class Rent{
Film film
User user
Period period
}
对于我所知道的DDD,我还有一个RentService
来创建一个Rent
对象。所以我有:
class RentService{
Rent rentMovie(User user, Film film, Date from, Date to){
//validation check (like if the film is already rented)
return rentRepository.store(new Rent(user, film, from, to));
}
}
最后,RentService
只创建一个新的Rent
对象,然后使用存储库存储它。这是正确的吗?
然后,我想在今天租用3天的Web应用程序中提供 RentNow!的按钮,是否应该在rentNow
中添加方法RentService
计算天数或者我可以重新使用旧方法并在Controller类中计算日期吗?
答案 0 :(得分:3)
最后,RentService只是创建一个新的Rent对象然后 使用存储库存储它。这是对的吗?
大部分是的。租赁服务是application service。但是,谁负责向服务提供User
和Film
实体。它可以是控制器,但您也可以RentService
自己这样做。控制器只负责传递ID:
Rent rentMovie(int userId, int filmId, Date from, Date to)
该服务必须引用适当的存储库。好处是“租赁电影”操作完全由服务封装,控制器的责任更少。
对于RentNow,还要在应用程序服务上创建专用方法。这似乎是一个商业用例,因此应该在服务上明确说明。