予約、既存の予約の変更、および既存の予約のキャンセルを可能にする予約システムがあります。私はインターフェイス分離の原則を調べていましたが、インターフェイスをどれだけ薄くするべきか、単一責任の原則に違反しているかどうか疑問に思っていました。私の最初の設計は次のとおりです。
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 インターフェイスにあるはずのメソッドのように思えます)。インターフェイスに何を入れる必要があり、別のインターフェイス、クラスなどに何を分離する必要があるかをどのように判断しますか...