Вот есть в программе иерархия стратегий. И в базовой есть методы СоздатьОперацию, Переместить, Отменить. В производной стратегии нужно иметь список созданных операций. Вот сейчас этот список я разместил непосредственно в стратегии. Но получилось что она разрослась методами типа НайтиКолвоОперациПоТипу и т.п. Вот думаю вынести в отдельный класс методы получающие инфу о списке сохданных Операций. Но сразу возникае вопрос. Если надо отменить все Операции. Это делать в самой стратегии или в этом Списке? Если в самой стратегии то получается необходимо знать внутренее устройство Списка. А если в списке то надо передавать ссылку на Стратегию (ведь в её базовом классе есть метод Отменить). Как такое палвильно сделать?
Список — основной класс, манипулирующий Операциями (создание, перемещение, отмена). В него передается конкретная стратегия, управляющая единичными операциями на низком уровне (в конструктор, или в каждый метод — если стратегии меняются динамически). Стратегия про список не знает. У списка также есть небольшое количество групповых методов типа find_operations(predicate), cancel_operations(predicate).
Re[2]: Подскажите как использовать
От:
Аноним
Дата:
12.09.11 06:00
Оценка:
Здравствуйте, -VaS-, Вы писали:
VS>Список — основной класс, манипулирующий Операциями (создание, перемещение, отмена). В него передается конкретная стратегия, управляющая единичными операциями на низком уровне (в конструктор, или в каждый метод — если стратегии меняются динамически). Стратегия про список не знает. У списка также есть небольшое количество групповых методов типа find_operations(predicate), cancel_operations(predicate).
Так стратегия про список знать не может. Список имеет общие операции типа переместить все, добавить, найти. А в какой последовательности это делать знает тока стратегия