Uncategorized No Comments

decorator pattern 예제

이 새로운 방법을 사용하면 연결된 “도우미” 개체를 다른 개체로 쉽게 대체하여 런타임시 컨테이너의 동작을 변경할 수 있습니다. 개체는 여러 개체에 대한 참조를 가지고 모든 종류의 작업을 위임하여 다양한 클래스의 동작을 사용할 수 있습니다. 집계/컴포지션은 데코레이터를 비롯한 많은 디자인 패턴의 핵심 원칙입니다. 이 메모에 대해 패턴 토론으로 돌아가보겠습니다. 옷을 입는 것은 데코레이터를 사용하는 예입니다. 추울 때는 스웨터를 입고 몸을 감싸야 합니다. 스웨터를 입고 추운 날에는 재킷을 입을 수 있습니다. 비가 오면 비옷을 입을 수 있습니다. 이러한 모든 의류는 기본적인 행동을 “확장”하지만 당신의 일부가 아니며, 필요하지 않을 때마다 쉽게 옷을 벗을 수 있습니다. 참으로 좋은 지식 자료의 조리법인 간단한 예제가있는 좋은 기사. 😉 데코레이터 무늬는 이만큼 간단하지 않습니다. 감사합니다 조 간단한 실제 예제와 함께 간단하고 의미있는 기사 … 지금은 당신의 블로그에서 다른 물건을 읽을 수밖에 없었다..

🙂 예를 들어 창 시스템의 창을 고려합니다. 창 의 내용을 스크롤할 수 있도록 하려면 가로 또는 세로 스크롤 막대를 적절히 추가할 수 있습니다. 창이 Windows 인터페이스의 인스턴스로 표시된다고 가정하고 이 클래스에 스크롤 막대를 추가하는 기능이 없다고 가정합니다. 하나를 만들 수 있는 하위 클래스 ScrollingWindow 그들을 제공 하는, 또는 기존 창 개체에이 기능을 추가 하는 ScrollingWindowDecorat를 만들 수 있습니다. 이 시점에서, 어느 솔루션도 괜찮을 것입니다. 데코레이터 패턴 (또는 위의 예과 같이 파이썬에서이 디자인 패턴의 구현)을 파이썬 언어 기능인 파이썬 데코레이터와 혼동하지 마십시오. 그들은 다른 것들입니다. 래퍼는 패턴의 주요 개념을 명확하게 표현하는 데코레이터 패턴의 대체 별명입니다. “래퍼”는 일부 “대상” 개체와 연결할 수 있는 개체입니다. 래퍼에는 대상과 동일한 메서드 집합이 포함되어 있으며 받는 모든 요청을 위임합니다. 그러나 래퍼는 요청을 대상에 전달하기 전이나 후에 수행하여 결과를 변경할 수 있습니다. 데코레이터 패턴은 하위 분류에 대한 대안입니다.

하위 분류는 컴파일 타임에 동작을 추가하며 변경 사항은 원래 클래스의 모든 인스턴스에 영향을 줍니다. 데코팅은 선택한 개체에 대한 런타임에 새로운 동작을 제공할 수 있습니다. ->데코레이터 트롤 = 새로운 ClubDecorator (트롤)를 추가하여 간단한 트롤의 동작을 변경하십시오. 트롤.getAttackPower() // 42 트롤.공격(); 트롤은 당신을 잡아하려고합니다! 트롤은 클럽과 함께 당신을 스윙! 트롤.플리배틀(); 트롤은 공포에 비명을 지르고 도망! 그리고 실행하는 동안 자신의 클럽을 잃는다! 데코레이터를 사용하면 개체의 스킨을 변경할 수 있으며, Strategy를 사용하면 내장을 변경할 수 있습니다. 오늘, 나는 데코레이터 디자인 패턴이라는 잘 알려져 있고 자주 사용되는 패턴 중 하나를 논의하고있다.