티스토리 뷰
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 ]
- 세부 사항 작성 클래스
: 각 상황에 맞춘 로직을 작성
[ Main.java ]
: Template "createUser" 알고리즘은 변경되지 않으나,
해당 Template 이 실행되는 상세 기능들은 각 상세 구현 메서드에 맞춰 변경됨을 확인할 수 있음.
※ 함수형 프로그래밍을 이용한 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
'DesignPattern' 카테고리의 다른 글
[ Design Pattern ] Decorator Pattern (0) | 2022.03.17 |
---|---|
[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 |