2

我正在创建一个应用程序来尝试 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对象,然后使用存储库将其存储。这是正确的吗?
然后,我想为RentNow 提供一个按钮!在从今天起租用 3 天的 Web 应用程序中,我应该添加一个计算天数的方法rentNowRentService还是可以重新使用旧方法并在 Controller 类中计算该日期?

4

1 回答 1

3

最后,RentService 只需创建一个新的 Rent 对象,然后使用存储库将其存储。这是正确的吗?

多半是对的。出租服务是一种应用服务。但是,谁负责向服务提供UserFilm实体。它可以是控制器,但是您也可以让RentService自己这样做。控制器只负责传递 ID:

Rent rentMovie(int userId, int filmId, Date from, Date to)

该服务必须引用适当的存储库。好处是“租电影”操作完全被服务封装,控制器的职责更少。

对于 RentNow,还要在应用程序服务上创建一个专用方法。这似乎是一个业务用例,因此应该在服务上明确说明。

于 2013-04-03T17:39:33.893 回答