C# 航程、预订、预订服务-在哪里进行容量检查
我是领域驱动设计的新手,希望听听您对设计决策的看法: 在我的领域中,我有实体“航行”和“预订”。 voyage的构造函数如下所示:C# 航程、预订、预订服务-在哪里进行容量检查,c#,service,domain-driven-design,C#,Service,Domain Driven Design,我是领域驱动设计的新手,希望听听您对设计决策的看法: 在我的领域中,我有实体“航行”和“预订”。 voyage的构造函数如下所示: public Voyage(VoyageNumber voyageNumber, Schedule schedule, IList<VoyagePrice> voyagePrices, Location location,
public Voyage(VoyageNumber voyageNumber,
Schedule schedule,
IList<VoyagePrice> voyagePrices,
Location location,
Capacity capacity)
public Booking(BookingNumber bookingNumber,
Customer customer,
Voyage voyage,
IList<ConfirmedPerson> confirmedPersons)
公共航程(VoyageNumber VoyageNumber,
时间表,
IList航运公司,
地点,,
容量(容量)
值对象“voyagePrices”包含特定人员类型(儿童、成人等)的价格信息。载客量包含航程中允许的最大人数
“预订”的构造函数如下所示:
public Voyage(VoyageNumber voyageNumber,
Schedule schedule,
IList<VoyagePrice> voyagePrices,
Location location,
Capacity capacity)
public Booking(BookingNumber bookingNumber,
Customer customer,
Voyage voyage,
IList<ConfirmedPerson> confirmedPersons)
公共预订(预订号码预订号码,
客户,,
航程,
IList确认人)
confirmedPersons包含客户想要预订的人员列表(即2名成人,1名儿童)。现在,在允许保存预订之前,当然需要检查航次的容量。我不认为“航行”应该包含所有预订的清单。检查预订服务或预订工厂的容量可以吗?你有什么建议吗,也许是一个小的代码片段?谢谢大家! 将可用容量作为航行或类似布尔封装的一部分是完全可能且有效的
Voyage.isFull()
从旅行者储蓄中检索特定航次汇总后,即可获得该信息
然而,这还不够,在你从航海家仓库取回航程后,航程总有可能填满。所以你需要处理这种特殊情况,也许像
public interface BookingService {
Booking book(BookingRequest br) throws VoyageIsFullException;
}
你可能会想要一个订书工厂
public class BookingRequestFactory {
public static BookingRequest create(Voyage v, Customer c, IList<Person> travelers)
}
公共类BookingRequestFactory{
公共静态预订请求创建(航次v、客户c、IList travelers)
}
BookingRequestFactory可以进行一些基本的验证,但并不是全部,因为它是否完整的逻辑可能需要协作,而不仅仅是在对象工厂中,并且可能最好由BookingService处理。将可用容量作为航行或类似布尔封装的一部分是完全可能且有效的
Voyage.isFull()
从旅行者储蓄中检索特定航次汇总后,即可获得该信息
然而,这还不够,在你从航海家仓库取回航程后,航程总有可能填满。所以你需要处理这种特殊情况,也许像
public interface BookingService {
Booking book(BookingRequest br) throws VoyageIsFullException;
}
你可能会想要一个订书工厂
public class BookingRequestFactory {
public static BookingRequest create(Voyage v, Customer c, IList<Person> travelers)
}
公共类BookingRequestFactory{
公共静态预订请求创建(航次v、客户c、IList travelers)
}
BookingRequestFactory可以进行一些基本的验证,但不是全部,因为它是否完整的逻辑可能需要在对象工厂之外的协作,并且可能最好由BookingService来处理。如果我没听错,您必须连接这两个实体。我建议您像在关系数据库中一样进行操作。浏览到此链接:并阅读“多对多关系”一段,我认为这可能是一个解决方案:-)如果我没记错,您必须连接这两个实体。我建议您像在关系数据库中一样进行操作。浏览此链接:并阅读“多对多关系”一段,我认为这可能是一个解决方案:-)一个非常深思熟虑的答案!谢谢你对预订请求的提示。一个非常周到的回答!谢谢你给我关于预订请求的提示。