Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- decorator 패턴
- cloud native
- 클라우드 네이티브 자바
- 동기화
- 머신러닝
- cloud native java
- CRD
- ingress
- Kotlin
- devops
- 클라우드 네이티브
- 자바
- ansible
- java
- MySQL
- Algorithm
- Semaphore
- Microservice
- 마이크로서비스
- Stress test
- nGrinder
- kubernetes
- 쿠버네티스
- 헬름
- spring microservice
- MSA
- Adapter 패턴
- Spring
- 익명클래스
- 코틀린
Archives
- Today
- Total
카샤의 만개시기
Decorator 패턴 본문
데코레이터 패턴은 인터페이스를 바꾸지 않고 책임(기능)만 추가하여 확장하는 패턴이다.
대표적인 예제로는 Reader와 BufferedReader가 있다.
BufferedReader는 Reader 유틸에 버퍼의 기능을 확장한 것이다.
우리는 글자를 꾸미는 예제를 만들어보자.
public interface Print {
String print();
}
public class OriginPrint implements Print {
@Override
public String print() {
return "design pattern";
}
}
Print 인터페이스를 상속받아 design pattern
을 출력하는 print()
함수를 만들었다.
public class StarPrint implements Print {
private String decoStr = "**";
public StarPrint(Print print) {
this.decoStr = decoStr + print.print() + decoStr;
}
@Override
public String print() {
return decoStr;
}
}
public class DallorPrint implements Print {
private String decoStr = "$$";
public DallorPrint(Print print) {
this.decoStr = decoStr + print.print() + decoStr;
}
@Override
public String print() {
return decoStr;
}
}
design pattern
텍스트를 꾸며줄 StarPrint와 DallorPrint를 만들었다.
public class DecoratorTest {
Print originPrint;
@Before
public void setUp() {
originPrint = new OriginPrint();
}
@Test
public void test() {
Print print = new StarPrint(new DallorPrint(originPrint));
System.out.println(print.print());
}
}
테스트를 위해 OriginPrint를 DallorPirnt에 주입하여 기능을 확장하였고 그 이후에 StarPrint에 주입하여 기능을 한번더 확장하였습니다.
출력값은 다음과 같습니다
**$$design pattern$$**
decorator 패턴과 adapter 패턴 차이
'Foundation > Design Pattern' 카테고리의 다른 글
Command Pattern (0) | 2019.11.02 |
---|---|
Adapter 패턴과 Decorator 패턴의 차이 (0) | 2019.10.27 |
Adapter 패턴 (0) | 2019.10.27 |
Facade Pattern (0) | 2019.10.19 |
Comments