소프트웨어 인터페이스에 참조할 수 있습니다 넓은 범위의 다른 유형의 인터페이스에서 다른””수준:운영 체제할 수 있습 인터페이스의 조각과 하드웨어입니다. 응용 프로그램 또는 프로그램에서 실행 되는 운영 체제해야 할 수 있습을 상호 작용을 통해 데이터 스트림,필터를,그리고 파이프라인;그리고 객체 지향 프로그램,객체는 응용 프로그램 내에서 필요할 수 있를 통해 상호 작용하는 방법입니다.
에 practiceEdit
의 핵심 원칙 디자인을 금지하는 모든 자원이 기본적으로 액세스할 수 있도록을 통해서만 잘 정의된 엔트리 포인트,즉,인터페이스가 있습니다. 소프트웨어 인터페이스는 컴퓨터 리소스(예:메모리,CPU,스토리지 등)에 대한 액세스를 제공합니다.)의 기본 컴퓨터 시스템에 직접 액세스(예:통해 잘 설계된 인터페이스)이러한 리소스 소프트웨어 있을 수 있는 중요한 파급 효과—때때로 비참한 것—기능성과 안정성.
사이의 인터페이스 소프트웨어 구성 요소를 제공할 수 있는 상수,데이터의 유형,형식의 절차,예외 사양과 방법은 서명이 있습니다. 경우에 따라 공용 변수도 인터페이스의 일부로 정의됩니다.
소프트웨어 모듈 A 의 인터페이스는 해당 모듈의 구현과 별도로 의도적으로 정의됩니다. 후자를 포함한 실제 코드의 절차와 방법에 설명된 인터페이스뿐만 아니라,다른”개인”변수,절차,etc. A 와 상호 작용하는 또 다른 소프트웨어 모듈 B(예:클라이언트 to A)는 게시 된 인터페이스를 통해서만 그렇게하도록 강요됩니다. 하나는 실용적인 활용이 배열은 대체의 구현과 다른 구현의 동일한 인터페이스가 발생하지 않습 B 실패를 어떻게 내부의 요구 사항을 충족 인터페이스의 타당하지 않 B 으로 한정한 사양의 인터페이스입니다. (또한리스 코프 대체 원리를 참조하십시오.)
in object-oriented languagesEdit
에 일부 개체 지향적인 언어,특히 그들이 여러 기업 용어 인터페이스를 정의하는 데 사용되는 추상적인 형식 데이터를 포함하지 않습니다 그러나 정의 행동 방법으로 서명이 있습니다. 클래스 코드 및 데이터에 대한 모든 방법 해당하는 인터페이스 및 선언하도록 말을 구현하는 인터페이스입니다. 또한 단일 상속 언어에서도 여러 인터페이스를 구현할 수 있으므로 동시에 다른 유형이 될 수 있습니다.
인터페이스가 따라서 형식 정;어디서나 객체를 교환할 수 있는(예를 들어,기능 또는 메소드 호출)이 유형의 객체를 교환할 수 있습의 측면에서 정의 될 것이 하나의 인터페이스 구현 또는 기본 클래스가 지정하는 대신 특정 클래스입니다. 이 접근법은 해당 인터페이스를 구현하는 모든 클래스를 사용할 수 있음을 의미합니다. 예를 들어,구현미로 사용될 수 있습을 개발할 수 있도록 진행하기 전에 최종 구현을 사용할 수 있습니다. 또 다른 경우에,테스트 중에 가짜 또는 모의 구현이 대체 될 수있다. 이러한 스텁 구현은 개발 프로세스의 뒷부분에서 실제 코드로 대체됩니다.
일반적으로는 방법에 정의된 인터페이스 코드가 없고,따라서 사용할 수 없습니다,그것에 의해 구현되어야한다는 추상적이지 않고 코드를 실행될 때 호출됩니다. 인터페이스라는”Stack
push()
pop()
FastStack
GenericStack
첫 번째는,빠르고,작업으로 데이터 구조의 크기가 고정되고,두 번째 사용하여 데이터 구조는 크기를 조정할 수 있습,그러나의 비용은 다소 낮은 속도입니다.
인터페이스는 많은 메소드를 포함 할 수 있지만 하나만 포함하거나 전혀 포함하지 않을 수 있습니다. 예를 들어,Java 언어는 단일read()
Readable
BufferedReader
FileReader
InputStreamReader
PipedReader
,andStringReader
Serializable
포함하지 않는 방법 모두에게 제공하는 역할을 실행시간에 정보를 일반적인 처리를 사용하여 반영합니다.
interfaceEdit 에 프로그래밍
인터페이스의 사용은 인터페이스에 프로그래밍이라는 프로그래밍 스타일을 허용합니다. 이 방법을 기초 프로그래밍 로직 인터페이스에 사용하는 개체의가 아닌 내부. 인터페이스에 대한 프로그래밍은 구현 특성에 대한 의존성을 줄이고 코드를 더 재사용 가능하게 만듭니다.
이 아이디어를 극단적 inversion of control 잎 컨텍스트를 삽입하는 코드로 특정 인터페이스 구현할을 수행하는 데 사용됩니다.