티스토리 뷰
Reference
패스트캠퍼스 강의 : The Red: 25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 JAVA STREAM
Decorator Pattern
구조 패턴 중 하나
용도에 따라 객체에 기능을 추가(decorate)함
구현 방식
아래 두가지 기능을 포함해야 한다.
- 실제 처리 기능을 포함하는 메서드
- 다음 처리자에게 넘기는 메서드
구현 코드
[ PriceProcessor.java ]
interface 이며, 처리로직을 포함하는 추상 메서드, 다음 처리자로 넘기는 메서드를 포함한다.
- process() : 처리 기능 로직을 포함하는 메서드
- andThen() : 다음 처리자와 연결하는 메서드
[ BasicPriceProcessor.java, DiscountPriceProcessor.java, TaxPriceProcessor.java ]
PriceProcessor 인터페이스를 상속받아, 각 처리 기능들을 구현한 클래스들이다.
[ Main.java ]
추가할 기능을 가진 Processor들을 생성하고,
각 처리자(BaiscPriceProcessor, DiscountPriceProcess, TaxPriceProcessor) 들을 연결한다.
처리할 객체를 넣으면, 연결된 기능들의 순서대로 처리가 진행된 후,
결과가 출력된다.
※ 함수형 프로그래밍으로 작성하는 방법
위와 같은 방식은 필요한 기능마다 클래스를 정의하고 생성해야 한다.
즉, 기능이 많아질수록 그만큼 클래스가 계속 증가한다.
함수형 프로그래밍으로 작성할 경우,
처리 기능에 대하여, 람다로 구체적인 기능을 구현할 수 있으므로, 추가적인 클래스 정의 및 생성 코드가 필요하지 않게 된다.
단, 처리 로직을 재사용하는 경우라면, 람다는 재사용이 불가능하므로, 클래스를 생성하여 재사용이 용이하도록 한다.
전체코드
↓
https://gitlab.com/mskim0ct/tutorial/-/tree/main/src/com/fastcampus/chapter10/decorator
'DesignPattern' 카테고리의 다른 글
[ Design Pattern ] Template Method Pattern (0) | 2022.03.11 |
---|---|
[Design Pattern] Strategy Pattern (0) | 2022.03.11 |
[Design Pattern] Chain of Responsibility pattern (0) | 2022.03.09 |
[ 생성 패턴 ] Singleton 패턴 (0) | 2021.12.14 |
[디자인패턴-java] 디자인 패턴을 배우는 이유 (0) | 2021.12.12 |