- Spring에서 자주 쓰이는 디자인 패턴 52022년 11월 05일
- starryeye
- 작성자
- 2022.11.05.:30
프록시 개념을 사용한 프록시 패턴에 이어서..
똑같이 프록시 개념을 사용하는 데코레이터 패턴에 대해 알아 보자...
데코레이터 패턴은
프록시 개념 중, 부가 기능을 추가한다는 의도를 담고있는 패턴이다.
역시 예제를 통해 알아보자..
똑같이 프록시 개념을 사용하므로..
프록시 패턴과 구조는 동일하다..
(프록시 체인 개념도 함께 알아보자.)
위는 각각 클래스 의존관계와 런타임 객체 의존 관계이다.
프록시는 TimeDecorator, MessageDecorator 두개이며..
실제 Target 객체는 RealComponent 클래스이다.
Componet는...
부가기능을 수행할 MessageDecorator 클래스, TimeDecorator 클래스와
실제 객체인 RealComponent의 인터페이스이다.
실제 객체인 RealComponent는 Component 인터페이스를 구현 하고 있다.
TimeDecorator 는 실제 객체와 동일하게 Component 를 구현하고 있다.
Component를 생성시점에 하나 주입 받는다.
operation 메서드에서 Component 의 operation 메서드를 부르며...
부가기능(componet의 메서드가 수행되는 시간을 측정)을 수행한다.
component의 반환값을 그대로 반환해준다.
TimeDecorator와 동일하게 component를 주입받아 가지고 있으며..
Component를 구현하고 있다.
오버라이딩한 operation에서 component의 반환 값을 그대로 반환하지 않고..
살짝 수정한 값을 반환해준다.
Client의 동작과 Component간 주입되는 코드를 알아보자..
위에서 런타임시 객체 의존 관계 다이어그램과 동일하게..
서로 서로 주입되고 있는 것을 보고있다.
client의 execute 메서드를 호출하면..
차례로..
프록시인 timeDecorator의 operation 메서드..
프록시인 messageDecorator의 operation 메서드..
실제 객체인 realCompoenet의 operation 메서드가 호출 되고 반환은 역순으로 진행 될 것이다.
프록시가 프록시를 호출하여 이를 프록시 체인이라 부른다.
프록시 패턴과 데코레이터 패턴은 구조적으로는 동일하므로
쉽게 이해가 될 것이다.
<참고>
프록시 객체가 두개이고..
프록시 객체 코드에서 중복되는 코드들이 있다..
(프록시 객체의 생성자와 맴버변수 선언)
-> 이를 추상클래스로 하나로 모아서 중복 되는 코드를 최소화 할 수도 있다.
구조는 아래와 같다.
'Spring > Core' 카테고리의 다른 글
Spring에서 프록시 사용 2 (0) 2022.11.14 Spring에서 프록시 사용 1 (0) 2022.11.05 Spring에서 자주 쓰이는 디자인 패턴 4 (0) 2022.11.05 Spring에서 자주 쓰이는 디자인 패턴 3 (0) 2022.11.05 Spring에서 자주 쓰이는 디자인 패턴 2 (0) 2022.10.20 다음글이전글이전 글이 없습니다.댓글