나는 그 질문이 스스로 설명하는 것이라고 믿는다. 차라리 질문을지지하기 위해 예제에 좀 더 집중할 것입니다.인터페이스 분리 원칙 - 분리 대상 결정 방법은 무엇입니까?
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
public interface ICollection : IEnumerable
{
void CopyTo(Array array, int index);
int Count { get; }
Object SyncRoot { get; }
bool IsSynchronized { get; }
}
public interface IList : ICollection
{
Object this[int index] { get; set; }
int Add(Object value);
bool Contains(Object value);
void Clear();
bool IsReadOnly { get; }
bool IsFixedSize { get; }
int IndexOf(Object value);
void Insert(int index, Object value);
void Remove(Object value);
void RemoveAt(int index);
}
는 IEnumerable
이 컬렉션을 통해 반복 만 할 수 있도록 분리 된 것이 분명하다. 그러나 나는 그들이 왜 ICollection
과 IList
을 분리하여 보관했는지 이해하지 못한다. 비록 그들이 하나 일지라도, IList는 그 행동이 어떤 콜렉션에 의해 항상 요구되기 때문에 지방이되지 않을 것입니까?
ICollection
의 루프에 필요하고 경우 API는
IEnumerable
을 반환 말한다
this 포스트를 가로 질러왔다.
MSFT는 어떻게 ISP를 완벽하게 적용하여 지난 몇 년 동안 아무런 문제도 일으키지 않았습니까?
ISP에 클라이언트 코드 요구 사항 또는 한 번만 적용되는 응용 프로그램을 계속 적용합니까? ISP가 한 번만 적용되는 경우 내 질문은 게시물 제목 자체에 있습니다. 그들은 ICollection
및 IList
분리를 유지하는 이유
.NET 형식을 모범 사례의 예로 사용하는지 잘 모르겠습니다. –
예제를 기반으로 IList가 2 개 이상의 부분으로 분할되지 않은 이유를 묻습니다. Add + Remove는 At 및 [] 메소드보다 낮은 레벨 일 수 있습니다. –