교수님이 쓰라고 하셔서 쓰는 그런데 은근 재밌는 듯

JAVA

[JAVA] 디자인 패턴 - 템플릿 메소드

shinyunha 2025. 10. 17. 13:23

어떤 디자인 패턴을 더 조사할지 결정하기 위해 코파일럿의 도움을 받았다.

일단 디자인 패턴이 뭔지 아냐고 물어봤더니 잘 알고 있었다. 이제 출처와 함께 가장 자주 쓰이는 디자인 패턴 5가지를 알려달라고 했다. 벨로그를 찾아서 싱글톤, 팩토리 메서드, 템플릿 메서드, 옵저버, 전략 패턴이라는 답변을 줬다. 이제 템플릿 메서드 패턴과 옵저버 패턴에 대해 더 자세하게 알려달라고 했다. 

 

옵저버는 아직 필요가 없을 것 같고 템플릿 메소드 패턴은 이미 우리가 자주 사용하던 방식 같아 보여서 이걸 조사해보기로 했다. 먼저 코파일럿한테 JAVA에서 템플릿 메소드 패턴에 대해 더 설명해달라고 했다. 

 

템플릿 메소드 패턴

공통된 알고리즘의 흐름은 추상 클래스에서 정의하고 구체적인 동작은 하위 클래스에서 추상 메서드를 오버라이드하여 정의하는 패턴이다. 

 

장점

중복 제거: 공통 흐름은 상위 클래스에 정의한다

확장성: 새로운 로직 추가 시 하위 클래스만 추가로 작성하면 된다

 

단점

상속에 의존: JAVA는 다중 상속을 지원하지 않기 때문에 유연성이 떨어질 수 있다


템플릿 메소드 패턴이 무엇인지는 코파일럿이 잘 설명해줬기 때문에 나는 적용사례를 찾아봤다

 

https://refactoring.guru/design-patterns/template-method

 

Template Method

Problem Imagine that you’re creating a data mining application that analyzes corporate documents. Users feed the app documents in various formats (PDF, DOC, CSV), and it tries to extract meaningful data from these docs in a uniform format. The first vers

refactoring.guru

위 링크에 설명이 굉장히 잘 되어있다. 가장 인상적이었던 부분은 패턴 간의 관계이다. 수업 시간에 배웠던 팩토리 패턴이 템플릿 메소드 패턴과 비슷하다고 생각했는데 실제로 팩토리 패턴이 템플릿 메소드 패턴의 하위 패턴이라는 게 신기했다. 

링크에 있는 내용 캡처

 

추상 클래스를 처음 배울 때 저게 도대체 왜 필요한지 궁금했는데 이 패턴을 조사하고 계획의 중요성을 느끼면서 필요성을 알게 된 것 같다. 

'JAVA' 카테고리의 다른 글

[JAVA] GUI & Thread - 알낳기  (0) 2025.10.31
[JAVA] 중간고사 대비  (0) 2025.10.19
[JAVA] 디자인 패턴 - 전략 (짱구 예제)  (0) 2025.10.15
[JAVA] 커피메이커 Ver.1  (3) 2025.10.01
[JAVA] Thread  (0) 2025.09.24