디자인 패턴 (데코레이터 패턴) Decorator Pattern 개념과 예제
Decorator Pattern이란?
▶객체에 추가적인 책임을 동적으로 부여합니다. 데코레이터는 서브클래싱(상속)을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 합니다.
클래스 다이어그램과 코드로 확인하겠습니다.
코드의 흐름은 String에 문자열이 점점 추가되는 형태입니다. Decoator를 상속받은 Add 객체들이 자신이 추가해야 할 부분을 추가하여 return 해줍니다. 마지막인 Printer 객채는 print()를 통해 꾸며진 String을 return 하여 출려해줍니다.
1. Decorator abstract class
public abstract class Decorator extends Printer{
public abstract String print();
}
2. AddEnglish
public class AddEnglish extends Decorator {
private Printer printer;
public AddEnglish(Printer printer) {
this.printer = printer;
}
@Override
public String print() {
StringBuilder sb = new StringBuilder();
String string = printer.print();
sb.append("H").append(string).append("H");
return sb.toString();
}
}
3. AddStar class
public class AddStar extends Decorator{
private Printer printer;
public AddStar(Printer printer) {
this.printer = printer;
}
@Override
public String print() {
StringBuilder sb = new StringBuilder();
String string = printer.print();
sb.append('*').append(string).append('*');
return sb.toString();
}
}
4. AddZero class
public class AddZero extends Decorator{
private Printer printer;
public AddZero(Printer printer) {
this.printer = printer;
}
@Override
public String print() {
StringBuilder sb = new StringBuilder();
String string = printer.print();
sb.append(0).append(string).append(0);
return sb.toString();
}
}
5. Printer class
public class Printer {
private String string;
public void setString(String string) {
this.string = string;
}
public String print(){
return string;
}
}
6. Main class
public class Main {
public static void main(String[] args) {
Printer printer = new Printer();
printer.setString("real");
printer = new AddEnglish(printer);
printer = new AddZero(printer);
printer = new AddStar(printer);
String print = printer.print();
System.out.println(print);
}
}
7. 결과
지금까지 Decorator Pattern을 알아보았습니다. 다음은 Factory Pattern에 관하여 포스팅하겠습니다. 감사합니다.
전체 코드는 아래에서 확인 가능합니다:)
https://github.com/rlaehdals/design-pattern
'Desing Pattern' 카테고리의 다른 글
디자인 패턴 DAO Pattern 개념과 예제 (0) | 2022.01.01 |
---|---|
디자인 패턴 (싱글톤 패턴) Singleton Pattern 개념과 예제 (0) | 2021.12.31 |
디자인 패턴 Factory Pattern 개념과 예제 (0) | 2021.12.30 |
디자인 패턴 observer pattern(옵저버 패턴) 개념과 예제 (0) | 2021.12.30 |
디자인 패턴 (전략 패턴) strategy pattern 개념과 예제 (0) | 2021.12.29 |
댓글
이 글 공유하기
다른 글
-
디자인 패턴 (싱글톤 패턴) Singleton Pattern 개념과 예제
디자인 패턴 (싱글톤 패턴) Singleton Pattern 개념과 예제
2021.12.31 -
디자인 패턴 Factory Pattern 개념과 예제
디자인 패턴 Factory Pattern 개념과 예제
2021.12.30 -
디자인 패턴 observer pattern(옵저버 패턴) 개념과 예제
디자인 패턴 observer pattern(옵저버 패턴) 개념과 예제
2021.12.30 -
디자인 패턴 (전략 패턴) strategy pattern 개념과 예제
디자인 패턴 (전략 패턴) strategy pattern 개념과 예제
2021.12.29