예약을 예약하고, 기존 예약을 수정하고, 기존 예약을 취소 할 수있는 예약 시스템이 있습니다. 인터페이스 분리 원칙을 살펴 봤는데 인터페이스를 얼마나 얇게 만들어야하는지, 그리고 위반 사항이 단일 책임 원칙인지 궁금합니다.얇은 인터페이스와 굵은 인터페이스 사이의 "얇은 선"은 무엇입니까?
interface IReservation
{
void Book();
void Modify();
void Cancel();
}
하지만 나는 하나의 예약 시스템 경우, 예약을위한 다음 방법 중 하나를 그냥 예를 들어 예약과 우려를 구현할 필요가없는 것, 생각, 그래서 다음을했다 : 내 intial 디자인했다 :
interface IReservation : IBooking
{
}
또는
:interface IBook
{
void Book();
}
interface IModify
{
void Modify();
}
interface ICancel
{
void Cancel();
}
지금은 이런 식으로 뭔가를 할 수
그래서 질문은 내가 이것을 이렇게 엷게하는 것으로 가져 간다. 또한 인터페이스 이름을 생각하기가 어려워집니다. 예를 들어, IModify 또는 ICancel (IReservation 인터페이스에 있어야하는 메서드와 비슷합니다)을 좋아하지 않습니다. 인터페이스에 무엇이 들어가야하는지, 다른 인터페이스, 클래스 등으로 세분화되어야하는지 결정하는 방법은 무엇입니까?
당신이 이걸로 멀리 가는지 알기 란 쉽지 않습니다. 이 예제를 문자 그대로 사용한다면 - 그렇습니다. 이런 경우 (작은 것들) YAGNI 원리가 결정되면 IMO가 더 커지면 다른 요인들이 더욱 중요해진다. – kubal5003
제한된 대답으로 질문을 망치고 싶지는 않지만 두 접근법 모두에 대해 말할 수 있습니다. 가장 직관적 인 첫 번째 것은 모두가 시작할 것입니다. 두 번째는 IEnumerable 등의 프레임 워크 수준 인터페이스와 다소 비슷합니다.이 작업은 프레임 워크를 만드는 일회성 작업입니까? – kroonwijk