2017-10-28 3 views
1

학교 보고서의 경우 java.io.Reader 패키지가 Decorator pattern을 어떻게 구현하는지 설명해야합니다. java.io 패키지 (예 : here)에 대해서는 여러 가지 설명이 있지만 java.io.Reader 패키지 (여러 가지 경우)에는 여러 가지 설명이 있습니다. 여기에 내가 지금 무엇을 가지고, 나는이 디자인이 제대로 표시되지 않는 것을 알고 있지만, java.io.Reader 패키지가 실제로 구현하는 방법을 모르겠습니다. 데코레이터 패턴 java.io.reader

decorator java.io.Reader

그래서이 경우에는 ReaderComponentInputStreamReader Concrete ComponentBufferedReader DecoratorLineNumberReader Concrete Decorator 될 것이다. 다시 말하지만, 나는 이것이 틀렸다는 것을 안다. 그러나 나는 그것을 올바르게 표시하는 방법을 모른다.

+0

대소 문자가 정확합니다. BufferedReader에'<>'을 추가 할 수 있습니다. 개인적으로 나는 이것을 데코레이터 패턴의 예라고 부르지 않을 것입니다. 어떤 주장을하는 프로 : BufferedReader는 다른 Reader를 래핑합니다. 인터페이스가 아니더라도 LineNumberReader를 사용하면 비슷한 다이어그램을 만들 수 있습니다. 생성자 매개 변수 _와 동일한 인터페이스에 위임하는 것이 _ "decorates"_이라고 주장 할 수 있습니다. –

+0

LineNumberReader를 추가하는 것은 비슷한 다이어그램을 만들기 위해 조금 멀리 가져 왔습니다. –

답변

0

다이어그램이 맞습니다. Intellij (또는 다른 유능한 도구)에 액세스 할 수 있으면 Java 유형에 대한 UML 클래스 다이어그램을 볼 수 있습니다. 아래 스 니펫은 하나의 다이어그램입니다. 당신이 볼 수 있듯이

enter image description here

, 그것은 당신과 동의합니다. 한 가지 생각은 BufferedReader콘크리트 데코레이터입니다. Reader에서 추가 동작을 제공합니다.

+0

감사! 이 경우 콘크리트 장식 자 대신에 장식 자라고 뭐라 하시겠습니까? 나는 아직도 차이를 얻지 못한다. –

+0

@MeesKluivers, 문제 없습니다. 정의에 따르면, 데코레이터는'Reader'를 감싸고 있지만 새로운 * 행동이나 기능을 추가하지는 않습니다. – ChiefTwoPencils

관련 문제