2011-09-01 5 views
6

GoF 책의 13 페이지에 문장이 있습니다."디자인 패턴"은 '동일한 유형의 두 객체가 인터페이스의 일부만 공유하면됩니다'라고 말하는 이유는 무엇입니까?

Two objects of the same type need only share parts of their interfaces. 

이 문장을 이해할 수 있을지 확신하지 못합니다.

편집 :

: 실제로 해당 부분을 이해하는 데 도움이 될 수 있습니다. "Window"라는 인터페이스에 정의 된 작업에 대한 모든 요청을 수락하면 "Window"유형을 가진 것으로 오브젝트를 말합니다. 객체는 많은 유형을 가질 수 있으며 광범위하게 다른 객체가 하나의 유형을 공유 할 수 있습니다. 객체의 인터페이스의 일부는 한 유형으로 특징 지어 질 수 있고 다른 부분은 다른 유형에 의해 특징 지어 질 수 있습니다. 동일한 유형의 두 객체는 ​​ 의 인터페이스의 일부만 공유하면됩니다. 인터페이스는 다른 인터페이스를 서브 세트로 포함 할 수 있습니다.

+0

"인터페이스"우리가 지금 그 당시에는 널리 사용되지 않았다 알고. 아마 GoF는 동일한 클래스의 2 개 객체가 노출 된 클래스 메소드를 스스로 억제해야한다는 것을 의미했습니다. – StuartLC

답변

7

그들의 언어로, 객체 인터페이스은 객체의 전체 공공 계약입니다 (여기서 언어 구현은 생각하지 마십시오).

객체에 의해 정의 된 모든 서명의 집합은 인터페이스 객체에 불린다. 유형 더 당신이 선언 된 인터페이스로 생각하는 것이 무엇처럼

....

유형는 특정 인터페이스를 나타 내기 위해 사용되는 이름입니다.

상상 :

public class Foo : IBar, IBaz {} 

public class Fuz : IBar, IBuz {} 

푸와 Fuz 두 IBar "유형"하지만 그들은 단지 그들 각각의 인터페이스의 측면을 공유 할 수 있습니다.

+0

네, 그게 아마 정확히 무슨 뜻인지, 당신의 대답은 분명합니다. –

-1

나는 책이 없기 때문에 그것이 무엇을 의미하는지 모른다. 그러나 공용 변수는 공용 변수와 결합 된 클래스의 메소드 서명입니다. 특정 유형의 하위 유형 인 상위 유형의 하위 유형이기 때문에 상위 유형에는없는 메소드가있을 수 있으므로 상위 유형의 일부 인터페이스 만 공유합니다. 그게 실제로 무슨 말인지는 모르겠다.

1

보다 전체 인용은 다음과 같습니다

유형은 특정 인터페이스를 나타 내기 위해 사용되는 이름입니다. "Window"라는 인터페이스에 정의 된 작업에 대한 모든 요청을 수락하면 개체의 유형이 "Window"인 것으로 말합니다. 객체에는 많은 유형이있을 수 있으며 광범위하게 다른 객체가 하나의 유형을 공유 할 수 있습니다. 객체 인터페이스의 부분 은 한 유형으로 특징 지어 질 수 있고 다른 유형은 다른 유형으로 특징 지어 질 수 있습니다. 같은 유형의 두 객체는 ​​인터페이스의 일부만 공유 할 필요가 있습니다 ( ).인터페이스에는 하위 집합과 같은 다른 인터페이스가 포함될 수 있습니다.

꽤 명확하게, 나는 이것이 다중 상속에 대해 이야기하고 있다고 생각합니다. 예를 들어, TextWindowMenuWindow이 있고 둘 다 하위 클래스 Window과 다른 클래스가 있습니다. 두 객체는 ​​사용하는 의미에 따라 "type"이 Window 인 것으로 간주 될 수 있으며 해당 객체는 해당 유형과 관련된 작업을 구현합니다. 둘 다 Window의 메소드가 있습니다. 그러나 TextWindowTextEditor 인 반면, MenuWindow은 서브 클래스가 될 수 있으므로 Window 부분이 겹치더라도 방법 집합의 전체 집합 ("인터페이스"가 의미하는 것)은 동일하지 않습니다.

http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf

관련 문제