인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

이윤구님의 프로필 이미지
이윤구

작성한 질문수

스프링 핵심 원리 - 고급편

프록시 패턴과 데코레이터 패턴 정리

component 중복초기화 부분 추상클래스로 변경

작성

·

564

8

강사님께서 말씀주신 component 중복 호출 부분 추상클래스로 빼봤습니다.  피드백 사항 있으면 말씀 부탁 드립니다^^;

Decorator - 추상클래스 

public abstract class Decorator implements Component{

private Component component;

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

@Override
public String operation() {
return component.operation();
}
}

MessageDecorator

public class MessageDecorator extends Decorator{

public MessageDecorator(Component component) {
super(component);
}

@Override
public String operation() {
log.info("MessageDecorator 실행");

//data -> *****data*****
String result = super.operation();
String decoResult = "*****" + result + "*****";
log.info("MessageDecorator 꾸미기 적용 전={}, 적용 후={}", result, decoResult);
return decoResult;
}
}

TimeDecoratior

public class MessageDecorator extends Decorator{

public MessageDecorator(Component component) {
super(component);
}

@Override
public String operation() {
log.info("MessageDecorator 실행");

//data -> *****data*****
String result = super.operation();
String decoResult = "*****" + result + "*****";
log.info("MessageDecorator 꾸미기 적용 전={}, 적용 후={}", result, decoResult);
return decoResult;
}
}

test 코드 

@Test
void decorator3() {
Decorator messageDecorator = new MessageDecorator(new RealComponent());
messageDecorator.operation();
System.out.println();

Decorator timeMsgDecorator = new TimeDecorator(new MessageDecorator(new RealComponent()));
timeMsgDecorator.operation();
}

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 이윤구님

잘 해결하셨습니다.

감사합니다.

이윤구님의 프로필 이미지
이윤구

작성한 질문수

질문하기