Проблемы при реализации паттерна "Стратегия" на Python
День добрый! Поставлена следующая задача:
Используя паттерн "Стратегия", спроектировать и реализовать приложение, которое обладает функционалом:
- Загрузки данных из текстового файла. Данные представляют собой целые числа, каждое число записано в отдельной строке файла.
- Хранении данных в виде списка. Если в файле элементов больше, загружаются первые 100, остальные игнорируются.
- Фильтрации данных. Выбрать только числа >10.
- Выводе отфильтрованных данных в консоль.
Однако при ее выполнении столкнулся с проблемой: не понимаю, как реализовать эти четыре стратегии так, чтобы в каждой последующей учитывались данные, полученные на прошлых этапах (к примеру, для фильтрации данных они уже должны храниться в списке и т.д.)
На данный момент, реализовано следующее:
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 шт):
возможно, предполагаю что вас просили в задаче немного не о том.
Главный прикол стратегии - изменение поведения в runtime. Из всех пунктов нам нужно понять, что же меняется(или можно изменить) в этом самом рантайме.
У вас вижу только фильтрацию.
Я бы написал фильтрацию через стратегию, а всё остальное - без нее.