2012-05-08 2 views
4

내가 내 테스트에이 질문을했다 :프로그래밍 패턴 예를 연구

입니다 프로그래밍/디자인 패턴의 어떤이 :

FileReader fr = new FileReader("file.txt"); 
BufferedReader bf = new BufferedReader(fr); 

내가 문제를 일으켜 죄송하지만, 프로그래밍 패턴의 정의는 저에게 불분명하며이 질문에 올바르게 대답하는 방법을 모르겠습니다.

+3

나는 그들이 장식 자 패턴을 찾고 있다고 생각합니다. –

답변

10

이것은 Decorator Pattern의 예입니다. 링크 된 위키 백과 문서 상태로

:

데코레이터 패턴은 동작을 동적으로 기존 개체에 추가 할 수있는 디자인 패턴입니다. 당신의 예에서

, 당신은보다 더 효율적인 읽기를 제공하는하는 FileReader에 버퍼링을 추가하는 정규 유엔 버퍼 FileReader을.

1

이것은 Decorator 패턴입니다. 에서 디자인 패턴 책 :

의도

: 동적 객체에 추가 책임을 첨부합니다. 사용 데코레이터

  • 다른 개체에 영향을주지 않고, 즉, 동적으로 투명하게 개별 객체에 책임을 추가 : 장식은

    이 적용 ... 기능

    을 확장하기위한 서브 클래스에 대한 유연한 대안을 제공 . 철회 될 수있는 책임에 대해서는

  • 입니다.
  • 서브 클래 싱을 통한 확장이 비실용적 인 경우. 때로는 많은 수의 독립 확장이 가능하며 모든 조합을 지원하기 위해 하위 클래스가 폭발적으로 증가합니다 ( ). 또는 클래스 정의가 숨겨져 있거나 서브 클래 싱에 사용할 수없는 경우가 있습니다.

BufferedReader의 경우, FileReader에 완충 기능 부착.

패턴에 대해 더 알고 싶다면이 책 (또는 더 밝은 "헤드 퍼스트 패턴")을 읽는 것이 좋습니다. 또한, JDK 내부의 패턴 사용법에 관해서는 answer이 훌륭합니다. 매우 멋진 것들입니다!