私はあなたが予約を予約し、既存の予約を変更し、既存の予約を取り消すことができる予約システムを持っています。私はInterface Segregation Principleを検討していましたが、私がインターフェースをどのように細くしなければならないのか、私が違反しているのかSingle Responsibility Principleを考えていました。薄いインターフェースと太いインターフェースの間の「細い線」とは何ですか?
interface IReservation
{
void Book();
void Modify();
void Cancel();
}
が、その後私は1つの予約システムならば、予約のためのこれらの方法のいずれかを実装する必要があり、例えば予約とちょうど懸念しているので、私は次のようでしたしないものを、考えた:私のintialデザインされました:
interface IReservation : IBooking
{
}
または
:interface IBook
{
void Book();
}
interface IModify
{
void Modify();
}
interface ICancel
{
void Cancel();
}
今、私はこのような何かを行うことができます
だから私はそれをこれほど薄くして遠くに持っていくことになります。また、IModifyやICancelが好きではないなど、インターフェースの名前を考えるのが難しくなります(IReservationインターフェース上にあるはずのメソッドのように思えます)。インターフェイスに入るべきものと、別のインターフェイス、クラスなどにセグメンテーションされるべきものを決定する方法...
これで遠くに行くのかどうかは分かりません。あなたがこの例を文字通り取るなら - はい。このような場合(小さなもの)のIMOではYAGNIの原則が決まりますが、それが大きくなると他の要因がより重要になります。 – kubal5003
私の限定された答えであなたの質問を台無しにしたくないですが、私は両方のアプローチのために何かを言うことができます。最初のものは、最も直感的で、誰もが始めるでしょう。もう1つはIEnumerableなどのフレームワークレベルのインターフェイスに似ています。これは一度だけの仕事ですか、フレームワークを作成しようとしていますか? – kroonwijk