Как реорганизовать несколько операторов if-elif в шаблон стратегии в Python? [закрыто]Python

Программы на Python
Anonymous
Как реорганизовать несколько операторов if-elif в шаблон стратегии в Python? [закрыто]

Сообщение Anonymous »

Проблема: Я создаю простой инструмент обработки данных. В зависимости от формата файла (JSON, XML или CSV) мне нужно применить разную логику синтаксического анализа. В настоящее время я использую длинную цепочку операторов if-elif внутри одного класса. По мере добавления новых форматов этот класс становится сложнее поддерживать, и он нарушает принцип единой ответственности.
Проведенное исследование: Я читал о шаблоне стратегии и проектировании на основе интерфейса. Я понимаю, что нужно инкапсулировать каждый алгоритм в отдельный класс, но, будучи новичком, я бьюсь над тем, как динамически выбирать правильную стратегию в Python, не создавая при этом очередного бардака «if-elif» на заводе.

Код: Выделить всё

class DataProcessor:
def process(self, format_type, data):
if format_type == "json":
return f"Parsing JSON: {data}"
elif format_type == "xml":
return f"Parsing XML: {data}"
elif format_type == "csv":
return f"Parsing CSV: {data}"
else:
raise ValueError("Unsupported format")

# Usage
processor = DataProcessor()
print(processor.process("json", "{'key': 'value'}"))
Чего я хочу достичь: Я хочу преобразовать это в чистую архитектуру, где:
  • Каждый синтаксический анализатор представляет собой отдельный класс/стратегию.
  • Процессор данных не нужно изменять при добавлении нового формата.
Что я пробовал: Я пытался создать словарь классов, но не уверен, является ли это «Pythonic» способом реализации шаблона «Стратегия» или существует более стандартный подход с использованием ABC (абстрактные базовые классы).
Как мне правильно реализовать это, чтобы мой код оставался масштабируемым?>

Вернуться в «Python»