데코레이터 패턴이 Java IO 클래스에 있습니까?


14

과제를 위해, 나는 갱 네 가지의 디자인 패턴의 클래스 어떤 알아 내야 java.io.Reader와 그 서브 클래스 java.io.PushbackReader, java.io.BufferedReader및이 java.io.FilterReader와 함께 건설되었다.

게시물 에 따르면 디자인 패턴은 데코레이터 패턴입니다. 이 경우에만 나에게 의미가 있습니다 PushbackReader, BufferedReader그리고 FilterReader효과적으로를 만드는 동시에 사용되는 장식 할 수 있습니다 BufferedPushbackFilterReader. 그게 아이디어야?


해당 클래스의 생성자를보십시오. 예를 들어 Buffered 자연 위에 자연 을 쌓을 수 Filter있습니까?
Kilian Foth

@ 킬리안 포스 : 그 것처럼 보인다.

답변:


10

예, 실제로 그렇게 장식 할 수 있습니다. 다음을 고려하십시오.

PushbackReader pushbackBufferedReader = new PushbackReader(
     new BufferedReader(original));

그것은 원래 독자를 장식합니다

  • 먼저 버퍼링
  • 푸시 백 / 읽지 않은 기능을 활성화합니다 (여전히 결과는 버퍼링됩니다.)

FilterReaderReader계층 구조의 기본 클래스는 ...


그리고 BufferedReader, FilterReaderPushbackReader의 장식입니다 Reader, 권리?

1
예, 맞습니다.
duffymo 2016 년

1

11

장식 패턴은 여기에 적용되기 때문에 BufferedReader래핑 Reader- 그것은 여전히 Reader(이 모든 방법이있다 Reader), 그러나 더 "종과 호각"(자세한 방법)가 있습니다.

다음은 한 클래스가 랩하는 클래스의 기능을 "장식"하는 방법을 보여주는 예제입니다. 꾸미기 위해 클래스를 묶을 수 있습니다.

        new BufferedReader(new FileReader(new File("some.file")));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.