티스토리 뷰

반응형

Reference

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

 

 

Template Method Pattern

- 행동패턴

- 상위 클래스는 알고리즘의 뼈대만을 정의하고 알고리즘의 각 단계는 하위 클래스에게 정의를 위임하는 패턴

- 알고리즘의 구조를 변경하지 않고 세부 단계들을 유연하게 변경할 수 있게 해줌

 

 

 

 

Template Method Pattern 코드 

[ AbstractUserService.java ]

- 알고리즘의 뼈대만을 정의한 abstract class. 

: 알고리즘 역할 메소드 : createUser()

: 하위클래스가 작성해야 할 세부단계 메소드 : validateUser(), writeToDB()

 

[ UserService.java, InternalUserService.java ]

- 세부 사항 작성 클래스

: 각 상황에 맞춘 로직을 작성

[ UserService 클래스의 세부단계 ]
[ InternalUserSerivce 클래스이 세부단계 ]

 

[ Main.java ]

: Template "createUser" 알고리즘은 변경되지 않으나, 

해당 Template 이 실행되는 상세 기능들은 각 상세 구현 메서드에 맞춰 변경됨을 확인할 수 있음.

[ UserService 클래스에서 구현된 상세 기능이 실행됨 ] 

 

[ InternalUserService 클래스에서 구현된 상세 기능이 실행됨 ]

 

 

 

※ 함수형 프로그래밍을 이용한 Template Method Pattern 구현

: Tempate Method Pattern을 적용하는데, 필요한 부가적인 코드들을 줄일 수 있음.

부가적인 코드들이란,

- abstract class 를 상속받아, 세부 사항을 정의하는 구체적인 클래스 생성 (UserService, InternalUserService )

 

[ UserServiceInFunctionalWay.java ]

: Predicate, Consumer 를 이용하여, 상세 내용을 외부에서 채울 수 있도록 설정

: Template 메소드인 createUser 구현

( Predicate, Consumer를 이용하여, template 메소드를 작성)

 

[ Main.java ]

: lambda를 이용하여, 세부 구현 사항을 작성하고, template 메소드를 실행

 

 

 

 

 

전체코드

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

 

src/com/fastcampus/chapter10/templateMethod · main · mskim / Tutorial

tutorial for study

gitlab.com

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함