티스토리 뷰

반응형

Reference 

패스트캠퍼스 강의 : The Red: 25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 JAVA STREAM

 


Decorator Pattern

 

구조 패턴 중 하나

용도에 따라 객체에 기능을 추가(decorate)함

 

 

구현 방식 

아래 두가지 기능을 포함해야 한다. 

- 실제 처리 기능을 포함하는 메서드

- 다음 처리자에게 넘기는 메서드

 

 

구현 코드 

[ PriceProcessor.java ]

interface 이며, 처리로직을 포함하는 추상 메서드, 다음 처리자로 넘기는 메서드를 포함한다.

- process() : 처리 기능 로직을 포함하는 메서드 

- andThen() : 다음 처리자와 연결하는 메서드

 

[ BasicPriceProcessor.java, DiscountPriceProcessor.java, TaxPriceProcessor.java ]

PriceProcessor 인터페이스를 상속받아, 각 처리 기능들을 구현한 클래스들이다.

 

[ BaiscPriceProcessor ]
[ DiscountPriceProcessor ]
[ TaxPriceProcessor ]

 

[ Main.java ]

추가할 기능을 가진 Processor들을 생성하고,

각 처리자(BaiscPriceProcessor, DiscountPriceProcess, TaxPriceProcessor) 들을 연결한다. 

처리할 객체를 넣으면, 연결된 기능들의 순서대로 처리가 진행된 후,

결과가 출력된다. 

[ 처리 결과 ]

 

 

※ 함수형 프로그래밍으로 작성하는 방법 

위와 같은 방식은 필요한 기능마다 클래스를 정의하고 생성해야 한다. 

즉, 기능이 많아질수록  그만큼 클래스가 계속 증가한다. 

 

함수형 프로그래밍으로 작성할 경우,

처리 기능에 대하여, 람다로 구체적인 기능을 구현할 수 있으므로, 추가적인 클래스 정의 및 생성 코드가 필요하지 않게 된다. 

단, 처리 로직을 재사용하는 경우라면, 람다는 재사용이 불가능하므로, 클래스를 생성하여 재사용이 용이하도록 한다.

 

[ 람다를 이용한 decorator 패턴 구현 ]

 

전체코드 

https://gitlab.com/mskim0ct/tutorial/-/tree/main/src/com/fastcampus/chapter10/decorator

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
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
글 보관함