Skip to content

bamjun/study-python-registry-pattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

프로젝트 001 - 데이터 내보내기 시스템

프로젝트 개요

이 프로젝트는 다양한 형식으로 데이터를 내보내는 시스템을 구현한 Python 프로젝트입니다. 세 가지 다른 접근 방식을 통해 동일한 기능을 구현하는 방법을 보여줍니다.

파일 구조

1. main001.py - 기본적인 조건문 방식

  • 기능: if-elif-else 문을 사용한 기본적인 데이터 내보내기
  • 특징:
    • 각 형식별로 개별 함수 정의 (export_pdf, export_csv, export_excel, export_json)
    • export_data 함수에서 조건문으로 형식 선택
    • 간단하고 직관적인 구조

2. main002.py - 딕셔너리 기반 방식

  • 기능: 딕셔너리를 사용한 함수 매핑 방식
  • 특징:
    • export_functions 딕셔너리에 형식별 함수 저장
    • get() 메서드를 사용한 안전한 함수 호출
    • 조건문보다 깔끔한 코드 구조

3. main003.py - 데코레이터 기반 레지스트리 방식

  • 기능: 데코레이터를 사용한 동적 함수 등록
  • 특징:
    • @register_exporter 데코레이터로 함수 자동 등록
    • 확장성이 뛰어난 구조
    • 새로운 내보내기 형식 추가가 용이

4. registry.py - 범용 레지스트리 시스템

  • 기능: 그룹과 이름을 가진 명령어 레지스트리
  • 특징:
    • @register_command 데코레이터 사용
    • 그룹별 명령어 관리 가능
    • 범용적인 레지스트리 패턴 구현

5. pyproject.toml - 프로젝트 설정

  • Python 버전: >=3.12
  • 프로젝트명: 001
  • 버전: 0.1.0

공통 기능

모든 main 파일들은 다음 형식으로 데이터를 내보낼 수 있습니다:

  • PDF
  • CSV
  • Excel
  • JSON

실행 방법

python main001.py  # 기본 방식
python main002.py  # 딕셔너리 방식
python main003.py  # 데코레이터 방식

설계 패턴

이 프로젝트는 다음과 같은 설계 패턴을 보여줍니다:

  1. Strategy Pattern - 다양한 내보내기 전략
  2. Registry Pattern - 함수 등록 및 관리
  3. Decorator Pattern - 함수 등록을 위한 데코레이터 사용

타입 힌트

모든 파일에서 Python의 타입 힌트를 적극 활용하여 코드의 가독성과 안정성을 높였습니다.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages