컴퓨터 공학

객체지향개발론 4장 데코레이터 패턴

혼새미로 2015. 11. 27. 02:20
반응형

5장 데코레이터 패턴

데코레이터는 장식하는 원래 객체와 동일한 타입의 객체임->장식된 객체를 원래 객체 대신 사용 가능함

한 객체를 여러 개의 데코레이터로 장식할 수 있음

동적으로 실행시간에 객체를 장식할 수 있음

보통 장식된 순서가 중요하지 않음

) --> 

객체에 동적으로 새로운 책임(행위,상태)를 추가할 수 있음(wrapper)

위임을 통한 문제해결



 

) --> 

데코레이터들을 대표하는 추상클래스를 정의하면 얻어지는 장점: 장식자와 장식될 수 있는 타입의 구분이 명확해짐. 장식자가 반드시 정의해야 하는 메소드를 지정할 수 있음

) --> 

동일한 요소를 여러번 적용 가능해야 하면 전략패턴으로 하면 안됨

또 전략패턴은 특정 메소드의 기능만 변경하지만 장식자 패턴은 여러 메소드의 기능을 변경할 수 있음

) --> 

패턴의 특성 : 구조

패턴의 수준 : 컴포넌트

용도:

상속에 의한 제약사항에 구속받지 않고 동적으로 객체에 기능 또는 상태를 추가하고 싶을 경우

시스템에 동작하면서 객체에 기능을 추가하고 제거하고 싶을 경우

동적으로 객체에 추가할 수 있는 서로 독립적인 다양한 기능들이 존재할 때

장단점

코딩이 단순해지며, 클래스의 응집력을 높일 수 있음

상속보다 유연하게 객체에 기능 또는 상태를 추가할 수 있으며 나중에 제거도 가능함. 또 어떤 책임을 두 번 적용하기도 쉬움

클래스가 비교적 많이 정의될 수 있고 디버깅이 힘들어질 수 있음. 참고->실제로 클래스 수를 줄이기 위해 이패턴을 사용함

관련 클래스들을 중복되어 있는 장식 요소를 한 곳에 정의할 수 있음

) --> 

구현 고려사항

최상위 컴포넌트 클래스가 가벼워야 함. 그래야 그것을 상속받은 나머지 클래스들도 안무거워짐

하나의 책임만 추가해야 하면 꼭 abstract decorator를 정의할 필요가 없음

반응형