언어/Python

파이썬(Python) - 템플릿 메소드(Template Method) 패턴(디자인패턴)

2019. 3. 6. 13:15
목차
  1. 파이썬(Python) - Template Method Pattern 예제 소스 코드


파이썬(Python) - Template Method Pattern



오늘은 디자인 패턴 중에서 여러 개발 언어(Java, Python 등)에서 많이 사용 되는 템플릿 메소드 (Template Method) 패턴에 대해서 알아보겠습니다.

템플릿 메소드 패턴은 주로 작업 단위로 클래스를 생성해서 서브클래스로 캡슐화 한 후 특정 단계
에서 맡은 역할을 수행하게 하는 패턴이라고 볼 수 있습니다.

말이 어렵지만, 간단하게 이야기하면 전체적으로 코드 레이아웃은 동일하게 가져가면서 비슷한 역할을
하는 메소드들의 중복을 최소화 하고 통합 하는 작업 시에 유용하다고 볼 수 있습니다.

그러면 문서 하단에서 간단하게 예제를 작성해보겠습니다.


파이썬(Python) - Template Method Pattern 예제 소스 코드


아래 예제에서 간단하게 파이썬 코드를 활용해서 템플릿 메소드 패턴을 구현해 보았습니다.

template_p.py

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from abc import ABC, abstractmethod
 
 
class Template(ABC):
    def __init__(self):
        pass
 
    @abstractmethod
    def func1(self):
        pass
 
    @abstractmethod
    def func2(self):
        pass
 
    @staticmethod
    def comm_fun():
        print("Run func1 and func2.")
 
    def execute(self):
        self.comm_fun()
        self.func1()
        self.func2()
 
 
class TemplateImpl1(Template):
    def func1(self):
        print("TemplateImplementation1.func1() called.")
 
    def func2(self):
        print("TemplateImplementation1.func2() called.")
 
 
class TemplateImpl2(Template):
    def func1(self):
        print("TemplateImplementation2.func1() called.")
 
    def func2(self):
        print("TemplateImplementation2.func2() called.")
 
 
print()
 
temp_impl1 = TemplateImpl1()
# help(temp_impl1)
temp_impl1.execute()
 
print("-" * 40)
 
temp_impl2 = TemplateImpl2()
# help(temp_impl2)
temp_impl2.execute()
Colored by Color Scripter
cs

-  4번 라인 : 추상(Abstract) 메소드를 정의하는 상위 클래스
-  26, 34번 라인 : 추상 메소드를 구현 및 오버라이딩 하는 하위(서브) 클래스
-  45번 라인 : 주석을 해제하면 클래스 관계도 확인
-  46, 52번라인 : 실행 및 결과 콘솔 출력



파이썬(Python)
- Template Method Pattern 실행 화면


아래 이미지로 실제 실행 화면을 확인하실 수 있습니다.


실제 실행 화면




마무리


이번 예제에서는 파이썬 디자인 패턴 중 템플릿 메소드 패턴에 대해서 간단하게 예제 코드를 작성해보고
결과를 확인해봤습니다.

보통 템플릿 메소드 패턴은 동일한 기능은 상위클래스에 정의하고 추상 메소드를 선언 후 서브(하위)
클래스에서 추상 메소드 구현을 통해서 확장/변화/수정 즉, 필요한 부분만 구현할 수 있게 합니다.

결과적으로 전체적으로 소스코드를 재 사용하고 알고리즘등을 클래스에 맞게 정의함으로써 코드의 중복을
최소화하고 재사용하는데 용이한 패턴이라고 볼 수 있습니다.


Java 뿐만 아니라 파이썬에서도 유용한 디자인 패턴 코딩을 직접 해보시는건 어떨까요?


다음 시간에도 파이썬 관련 유용한 주제에 대해서 포스팅 하도록 하겠습니다.

소스코드 다운로드 :  template_p.zip


저작자표시 동일조건 (새창열림)

'언어 > Python' 카테고리의 다른 글

파이썬(Python) - 네임드튜플(namedtuple) 사용 예제 및 소스코드  (3) 2019.08.18
파이썬(Python) - 매직(Special) 메소드 및 연산자 오버라이딩 설명 및 실습  (2) 2019.07.23
파이썬(Python) - 팩토리 메소드(Factory Method) 패턴(디자인패턴)  (0) 2019.02.25
파이썬 아나콘다(Anaconda) - 심화 사용법 정리(2) - env 명령어  (2) 2019.01.26
파이썬 아나콘다(Anaconda) - 심화 사용법 정리(1) - list, search 명령어  (0) 2019.01.23
  1. 파이썬(Python) - Template Method Pattern 예제 소스 코드
'언어/Python' 카테고리의 다른 글
  • 파이썬(Python) - 네임드튜플(namedtuple) 사용 예제 및 소스코드
  • 파이썬(Python) - 매직(Special) 메소드 및 연산자 오버라이딩 설명 및 실습
  • 파이썬(Python) - 팩토리 메소드(Factory Method) 패턴(디자인패턴)
  • 파이썬 아나콘다(Anaconda) - 심화 사용법 정리(2) - env 명령어
[좋은사람]
[좋은사람]
좋은사람의 개발 노트 입니다.
[좋은사람]
좋은사람의 개발 노트
[좋은사람]
전체
오늘
어제
  • 전체보기 (189)
    • 언어 (68)
      • Java (12)
      • Python (39)
      • C# (5)
      • PHP (4)
      • Go (8)
    • OS (18)
      • Linux (7)
      • Windows 10 (5)
      • Etc (6)
    • 빅데이터 & 분석 (8)
      • R (0)
      • Machine Learning (8)
    • 네트워크 (4)
      • Etc (4)
    • 웹 프론트 (25)
      • Javascript & ECMA (8)
      • Vue (13)
      • React (4)
    • 웹 백엔드 (15)
      • Spring (3)
      • Django & Flask (7)
      • Npm & Express (5)
    • 개발도구 (18)
      • Jetbrains (3)
      • Eclipse (5)
      • Git (4)
      • Atom & VScode (6)
    • 데이터베이스 (7)
      • Oracle (2)
      • MariaDB & MySQL (2)
      • Etc (3)
    • 모바일 (6)
      • Android (3)
      • Hybrid (3)
    • 라이프 (20)
      • 여행 & 일상 (6)
      • 취미 (14)

블로그 메뉴

  • 홈으로
  • 블로그소개
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Thread
  • centos
  • 디자인패턴
  • 이클립스
  • Anaconda
  • Algorithm
  • 개발자 면접
  • ubuntu
  • ps4
  • nodejs
  • 리액트
  • 아톰 에디터
  • vue.js
  • 인텔리j
  • 코딩 면접
  • Django
  • 3DS
  • 2DS
  • 미뮤
  • Linux
  • Git
  • Java
  • 윈도우10
  • Database
  • 커펌
  • windows10
  • javascript
  • flask
  • python
  • php
  • SpringSTS
  • 머신러닝
  • OCR
  • ATOM
  • go
  • C#
  • Eclipse
  • CFW
  • npm
  • react

최근 댓글

최근 글

hELLO · Designed By 정상우.
[좋은사람]
파이썬(Python) - 템플릿 메소드(Template Method) 패턴(디자인패턴)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.