Spring 핵심원리 고급편 - Decorator Pattern 2

목차

Spring 핵심원리 고급편 - Decorator Pattern 적용

@Slf4j
public class TimeDecorator implements Component{

private Component component;

public TimeDecorator(Component component) {
this.component = component;
}

@Override
public String operation() {
log.info("TimeDecorator 실행");
long startTime = System.currentTimeMillis();

String result = component.operation();

long endTime = System.currentTimeMillis();
long resultTime = endTime - startTime;
log.info("TimeDecorator 종료 resultTime = {}ms", resultTime);
return null;
}
}
@Test
void decorator2(){
Component realComponent = new RealComponent();
Component messageDecorator = new MessageDecorator(realComponent);
Component timeDecorator = new TimeDecorator(messageDecorator);
DecoratorPatternClient client = new DecoratorPatternClient(timeDecorator);
client.execute();
}

Decoratro Pattern 은 항상 내부에 꾸며 줄 대상(Component) 가 존재해야 한다.

Share