다음을 통해 공유


인터페이스 디자인

참고 항목

이 콘텐츠는 Pearson Education, Inc.의 허가를 받아 프레임워크 디자인 지침: 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용어 및 패턴, 2판에서 재인쇄되었습니다. 이 버전은 2008년에 출판되었으며 이후 3판에서 완전히 개정되었습니다. 이 페이지의 정보 중 일부는 최신 정보가 아닐 수 있습니다.

대부분의 API는 클래스 및 구조체를 사용하여 모델링하는 것이 가장 좋지만 인터페이스가 더 적합하거나 유일한 옵션인 경우가 있습니다.

CLR은 다중 상속을 지원하지 않지만(즉, CLR 클래스는 둘 이상의 기본 클래스에서 상속할 수 없음) 기본 클래스에서 상속할 뿐만 아니라 하나 이상의 인터페이스를 구현하는 형식을 허용합니다. 따라서 인터페이스는 대개 다중 상속의 효과를 얻는 데 사용됩니다. 예를 들어 IDisposable은 참여하려는 다른 모든 상속 계층 구조와 별도로 형식이 삭제 가능성을 지원할 수 있도록 하는 인터페이스입니다.

인터페이스 정의가 적합한 다른 상황은 일부 값 형식을 포함하여 여러 형식에서 지원할 수 있는 공용 인터페이스를 만드는 경우입니다. 값 형식은 ValueType 이외의 다른 형식에서 상속할 수 없지만 인터페이스를 구현할 수 있으므로 공통 기본 형식을 제공하려면 인터페이스 사용이 유일한 옵션입니다.

✔️ 값 형식을 포함하는 형식 세트에서 몇 가지 공용 API를 지원해야 하는 경우 인터페이스를 정의하세요.

✔️ 몇 가지 다른 형식에서 이미 상속된 형식에서 해당 기능을 지원해야 하는 경우 인터페이스를 정의하는 것이 좋습니다.

❌ 마커 인터페이스(멤버가 없는 인터페이스)를 사용하면 안 됩니다.

클래스를 특정 특성(마커)이 있는 것으로 표시해야 하는 경우 일반적으로 인터페이스가 아닌 사용자 지정 특성을 사용합니다.

✔️ 인터페이스의 구현인 형식을 하나 이상 제공하세요.

그러면 인터페이스 디자인의 유효성을 검사하는 데 도움이 됩니다. 예를 들어 List<T>IList<T> 인터페이스의 구현입니다.

✔️ 정의하는 각 인터페이스를 사용하는 하나 이상의 API를 제공하세요(인터페이스를 매개 변수로 사용하는 메서드 또는 인터페이스로 형식화된 속성).

그러면 인터페이스 디자인의 유효성을 검사하는 데 도움이 됩니다. 예를 들어 List<T>.SortSystem.Collections.Generic.IComparer<T> 인터페이스를 사용합니다.

❌ 이전에 제공된 인터페이스에 멤버를 추가하지 마세요.

그러면 인터페이스의 구현이 중단됩니다. 버전 관리 문제를 방지하려면 새 인터페이스를 만들어야 합니다.

이러한 지침에 설명된 경우를 제외하고 관리 코드 재사용 가능 라이브러리를 디자인할 때는 일반적으로 인터페이스가 아닌 클래스를 선택해야 합니다.

Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Pearson Education, Inc의 동의로 재인쇄. 출처: Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition 작성자: Krzysztof Cwalina 및 Brad Abrams, 출판 정보: Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

참고 항목