Вариация паттерна стратегии - PullRequest
0 голосов
/ 03 февраля 2012

Я использую шаблон стратегии для анализа файлов разных форматов.

Каждая стратегия возвращает список строк, проанализированных из файла.Теперь введено требование возвращать еще несколько данных из одного из типов файлов, поэтому требуется обновление для одной из стратегий.Существует ли распространенная практика для достижения этой цели?Я мог бы сохранить дополнительные данные в будущем, но я думаю, что это излишне?

Ответы [ 2 ]

0 голосов
/ 06 марта 2014

Вы можете создать новый интерфейс, который наследуется от интерфейса базовой стратегии, предоставляя новые необходимые вам данные.Тогда ваша конкретная стратегия реализации для конкретного файла будет реализовывать расширенный интерфейс.

Когда конкретный класс стратегии выбран и выполнен для любого данного файла, вы можете проверить, реализует ли он расширенный интерфейс и, если это так, обработать дополнительныйданные соответственно.

Преимущества такого способа состоят в том, что вы можете написать контракт данных в расширенном интерфейсе, а не иметь список дополнительных параметров в свободной форме.Кроме того, интерфейс можно использовать в других стратегиях, если это необходимо.

Недостатком является то, что если многие другие стратегии могут отличаться от общей, вы можете получить большую структуру интерфейса.

0 голосов
/ 03 февраля 2012

Возможное решение, которое я нашел, - вернуть список пользовательских типов объектов, в которых хранится дополнительный параметр.

...