我有一个预订系统,可让您预订、修改现有预订和取消现有预订。我正在研究接口隔离原则,我想知道我的接口应该有多薄,以及我是否违反了单一责任原则。我最初的设计是:
interface IReservation
{
void Book();
void Modify();
void Cancel();
}
但后来我想,如果一个预订系统不需要为预订实现这些方法之一,并且只关心预订,例如,我做了以下事情:
interface IBook
{
void Book();
}
interface IModify
{
void Modify();
}
interface ICancel
{
void Cancel();
}
现在我可以做这样的事情:
interface IReservation : IBooking
{
}
或者
interface IReservation : IBooking, IModify
{
}
所以问题就变成了我是不是把它像这样细化了。此外,为接口考虑名称变得更加困难,例如,我不喜欢 IModify 或 ICancel (它们对我来说就像应该在 IReservation 接口上的方法)。您如何确定应该进入接口的内容以及应该将哪些内容隔离到另一个接口、类等中...