문제

"Decorator"라는 이름이 Decorator 디자인 패턴으로 전달 된 기능을 위해 왜 선택되었는지 설명 할 수 있습니까?

데코레이터와 마킹 인터페이스가 그들의 목적에서 나와 매우 유사하기 때문에 항상 그 이름이 상당히 오해의 소지가 있습니다. 그러나 마커는 실제로 "아무것도"하지는 않지만 데코레이터는 확실히 그렇게합니다. 그러나 나에게 장식이라는 용어는 수동성을 암시합니다.이 패턴은 기능을 추가하는 데 사용되는이 패턴의 경우가 아닙니다.

도움이 되었습니까?

해결책

이 용어의 원점은 예를 들어 다른 구성 요소, 예를 들어 스크롤 바, 닫기 버튼 등과 함께 사용자 인터페이스를 장식하는 예제에서 비롯된 것이라고 생각합니다.

편집하다: Steven John Metsker의 "C#디자인 패턴"의 참조 페이지 308 :

Decorator의 원래 응용 분야 중 하나 (아마도 Decorator의 이름을 도출하는 응용 프로그램)는 GUI 구성 요소의 구성에 있습니다.

다른 팁

나는 당신이 집을 장식 할 때 당신이 실제로 벽이나 그와 비슷한 음식을 부러 뜨리지 않는다는 것입니다. 당신은 단지 외모 (그리고 그 기능)을 바꾸는 방식으로 원하는만큼 물건을 넣는 것입니다. . 나는이 단어가 비 무역 성과 선택 사항을 암시하기 위해 선택되었다고 생각합니다.

데코레이터는 기존 방법에 추가 기능을 추가하여 인터페이스를 "장식"하지만 실제로는 자체를 추가하지는 않습니다. 장식은 기본 기능에 필수적이지 않습니다. 그렇지 않으면 기본 클래스에 내장되었을 것입니다.

기존 객체에 새로운 기능을 추가하기 때문입니다. 본질적으로, 당신은 새로운 기능을 가진 객체를 "장식"하고 있습니다.

이봐, 이름을 만들기 위해 괴짜에게 맡기십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top