[Design Pattern] 데코레이터 패턴
데코레이터 패턴
데코레이터는 우리 말로 '장식'이다. 이름 그대로 그러한 장식(기능)들을 쉽게 추가할 수 있도록 돕는 패턴을 말한다.
Window에 대해 이야기해보자. (여기서 Window는 화면을 말한다. GUI 해본 사람이라면 알겠지??)
Window 인터페이스를 정의하자. 기능은 2가지만 나타냈다.
public interface Window { void draw(); // draws the Window String getDescription(); // returns a description of the Window }
위의 인터페이스의 구현체 하나를 만들자.
public class SimpleWindow implements Window { @Override public void draw() { // draw window } @Override public String getDescription() { return "simple window"; } }
자, 이제 Window 인터페이스를 구현한 추상 클래스를 만든다. 이 추상 클래스로 인해 기능을 유연하게 추가할 수 있다.
abstract class WindowDecorator implements Window { protected Window decoratedWindow; // the Window being decorated public WindowDecorator (Window decoratedWindow) { this.decoratedWindow = decoratedWindow; } }
위의 추상 클래스를 상속받아 디테일한 기능을 구현한다. 보면 생성자에 추상 클래스의 생성자로 위임하는걸 볼 수 있다.
public class HorizontalScrollBarDecorator extends WindowDecorator { public HorizontalScrollBarDecorator (Window decoratedWindow) { super(decoratedWindow); } @Override public void draw() { drawHorizontalScrollBar(); decoratedWindow.draw(); } private void drawHorizontalScrollBar() { // draw the horizontal scrollbar } @Override public String getDescription() { return decoratedWindow.getDescription() + ", including horizontal scrollbars"; } }
Main Entry에서 사용하는 코드
public class Main { public static void main(String[] args) { // create a decorated Window with horizontal and vertical scrollbars Window decoratedWindow = new HorizontalScrollBarDecorator( new VerticalScrollBarDecorator(new SimpleWindow())); // print the Window's description System.out.println(decoratedWindow.getDescription()); } }
'Design Pattern' 카테고리의 다른 글
[Design Pattern] 커맨드 패턴 (0) | 2020.02.14 |
---|---|
[Design Pattern] 어탭터 패턴과 퍼사드 패턴 (0) | 2020.01.31 |
[Design Pattern] 팩토리 메서드 패턴과 추상 팩토리 패턴 (0) | 2020.01.17 |
[Design Pattern] 옵저버 패턴 (0) | 2020.01.10 |
[Design Pattern] 디자인 패턴이란? (0) | 2020.01.09 |
댓글
이 글 공유하기
다른 글
-
[Design Pattern] 어탭터 패턴과 퍼사드 패턴
[Design Pattern] 어탭터 패턴과 퍼사드 패턴
2020.01.31 -
[Design Pattern] 팩토리 메서드 패턴과 추상 팩토리 패턴
[Design Pattern] 팩토리 메서드 패턴과 추상 팩토리 패턴
2020.01.17 -
[Design Pattern] 옵저버 패턴
[Design Pattern] 옵저버 패턴
2020.01.10 -
[Design Pattern] 디자인 패턴이란?
[Design Pattern] 디자인 패턴이란?
2020.01.09
댓글을 사용할 수 없습니다.