2010-11-18 2 views
4

브릿지 패턴의 목적은 위키 피 디아에서 인용하여 "추상화와 구현을 분리하는 것"입니다. 인터페이스가하는 것과 정확히 일치하지 않습니다. 인터페이스를 결정하고 해당 인터페이스를 사용하도록 클래스를 강요함으로써 다른 클래스는 내부 작동에 대한 지식 없이도이 클래스와 상호 작용할 수 있습니다.브릿지와 인터페이스의 차이점

브리지와 동일한 인터페이스가 있습니까?

답변

8

인터페이스는 단지 무언가의 "공개 API"를 의미합니다. 이것은 소프트웨어를 작성하는 계약입니다. Java는 키워드 계약을 포함하는 코드없이 interface 키워드를 사용하여 클래스를 정의합니다.

브리지 패턴은 디자인 패턴입니다. 디커플링의 약자. Java 인터페이스는이 패턴을 구현하는 한 가지 방법이라고 말할 수 있습니다.

일반적으로 브리지는 전체 API를 노출하지만 Java 인터페이스는 API의 일부만 노출 할 수 있습니다. 예 : bar()baz()의 두 가지 방법으로 클래스 Foo이 있습니다.

다리는 Foo과 같은 공개 API를 가지고 있으며 Foo이 사용될 수있는 곳이면 어디든 사용할 수 있습니다.

인터페이스를 사용하면 두 개를 가질 수 있습니다. 하나는 bar()이고 다른 하나는 baz()입니다. 두 클래스를 모두 구현하는 클래스는 Foo에 대한 올바른 구현이지만 해당 클래스 중 하나만 구현 한 클래스도 가질 수 있습니다.

1

"인터페이스"는 일반적으로 클래스에 공개 된 것을 말합니다. 제가 아는 한, Bridge 패턴에는 실제로 인터페이스와 구현을위한 별도의 클래스가 있습니다.

+0

Java (인터페이스 정의를 허용하는 다른 언어)에서는 인터페이스를 구현하는 클래스와 인터페이스를 구분하는 것이 일반적입니다. 수업에서 공개 회원이 "인터페이스"라는 데 동의하지만, OP가 요구하는 것은 아닌 것 같습니다. – Bernard

+0

확인. 그러면 인터페이스 자체가 하나의 추상화 레이어를 나타내는 반면 브릿지 패턴을 사용하면 실제로는 두 개의 추상화 레이어가 있음을 알 수 있습니다. 해당 위키 피 디아 항목의 다이어그램에서. – Lagerbaer

0

인터페이스는 구현시 준수해야하는 계약입니다. 브릿지는 인터페이스를 사용하여 인터페이스를 사용하여 특정 구현을 클라이언트 인터페이스에서 분리하여 클라이언트가 사용하는 서비스가 어떻게 작동하는지에 대한 세부 지식을 거의 필요로하지 않도록합니다.

0

Interface (많은 Java와 유사한 언어로 된 언어 구조 에서처럼)에 대해 이야기하고 있습니까? 또는 "유형이 클라이언트에게 제공하는 것"에서처럼 "인터페이스"를 사용합니까?

큰 차이가 있습니다. 하나는 보편적이지 않은 언어에 대한 세부 정보이며, Interface 유형을 구현하는 언어의 경우 브리지가 문과 유사하게 작동합니다. 다른 하나는 모든 OO 언어에 공통적입니다. 의). 클래스의 "인터페이스"에 대해서는 진술이 사실이 아닙니다.

관련 문제