Проблемы при реализации паттерна "Стратегия" на Python

День добрый! Поставлена следующая задача:

Используя паттерн "Стратегия", спроектировать и реализовать приложение, которое обладает функционалом:

  1. Загрузки данных из текстового файла. Данные представляют собой целые числа, каждое число записано в отдельной строке файла.
  2. Хранении данных в виде списка. Если в файле элементов больше, загружаются первые 100, остальные игнорируются.
  3. Фильтрации данных. Выбрать только числа >10.
  4. Выводе отфильтрованных данных в консоль.

Однако при ее выполнении столкнулся с проблемой: не понимаю, как реализовать эти четыре стратегии так, чтобы в каждой последующей учитывались данные, полученные на прошлых этапах (к примеру, для фильтрации данных они уже должны храниться в списке и т.д.)

На данный момент, реализовано следующее:

from __future__ import annotations
from abc import ABC, abstractmethod


class Context():
    def __init__(self, strategy: Strategy):
        self._strategy = strategy
    
    @property
    def strategy(self):
        return self._strategy

    @strategy.setter
    def strategy(self, strategy: Strategy):
        self._strategy = strategy    
    
    def result(self):
        # Результат выполнения стратегии

class Strategy(ABC):
    @abstractmethod
    def perform(self):
        pass

class ReadFile(Strategy):
    # ...


Ответы (1 шт):

Автор решения: Alex Khonko

возможно, предполагаю что вас просили в задаче немного не о том.

Главный прикол стратегии - изменение поведения в runtime. Из всех пунктов нам нужно понять, что же меняется(или можно изменить) в этом самом рантайме.

У вас вижу только фильтрацию.

Я бы написал фильтрацию через стратегию, а всё остальное - без нее.

→ Ссылка