공통 코드를 추상 클래스로 올리라는 것의 해석
첫 번째 질문은 '섹션 4'에 '데코레이터 패턴 - 예제 코드3' 편에서 김영한님이 private Component component;
TimeDecorator(Component component) {
this.component = component;
}를 드래그하며 MessageDecorator에서와의 중복 코드이기 때문에 추상 클래스를 만들어서 올릴 수 있다고 하셨는데 추상 클래스를 아래와 같이 만들어주고@Getter
@Setter
public abstract class AbstractDecorator implements Component {
private Component component;
AbstractDecorator(Component component) {
this.component = component;
}
} MessageDecorator를 이렇게 수정해주면 되는걸까요?@Slf4j
public class MessageDecorator extends AbstractDecorator{
public MessageDecorator(Component component) {
super(component);
}
@Override
public String operation() {
log.info("MessageDecorator 실행");
String result = super.getComponent().operation();
String decoResult = "**" + result + "**";
log.info("MessageDecorator 꾸미기 적용 전={}, 적용 후={}",result, decoResult);
return decoResult;
}
} 두 번째 질문은 추상클래스를 사용한다면 인터페이스의 장점을 활용하지 못할 것 같은데 이걸 의도하신 게 맞는지 궁금합니다. 감사합니다. 강의 잘 듣고 있습니다.