我有一個預訂系統,可讓您預訂預訂,修改現有預訂並取消現有預訂。我正在研究界面隔離原則,並且我想知道應該使界面變得多薄,如果我違反了單一責任原則。我INTIAL設計是:瘦和胖界面之間的「細線」是什麼?
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界面上的方法)。你如何確定應該進入一個接口的內容以及應該被分成另一個接口,類等的內容......
這不是直截了當的告訴你是否要遠離這一點。如果你直接用這個例子 - 是的。國際海事組織(IMO)在這種情況下(小型)會採用YAGNI原則來決定,但如果它變得更大,其他因素就變得更加重要。 – kubal5003
不想用我有限的答案來破壞你的問題,但我可以爲這兩種方法說點什麼。第一個,最直觀的,每個人都會開始。第二個更像框架級接口,比如IEnumerable等。這是一次性工作還是試圖創建一個框架? – kroonwijk