В соответствии с паттерном Стратегия нужно вынести алгоритм из класса C в отдельный класс S. Но как алгоритм, вынесенный в отдельный класс S, получит доступ к данным хранящимся в исходном классе C? Получается, что нужно чтобы исходный класс C обеспечивал, с помощью публичных методов, доступ ко всем своим данным, которые требуются алгоритму (реализованному в классе S)?
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет Всем!
МР>В соответствии с паттерном Стратегия нужно вынести алгоритм из класса C в отдельный класс S. Но как алгоритм, вынесенный в отдельный класс S, получит доступ к данным хранящимся в исходном классе C? Получается, что нужно чтобы исходный класс C обеспечивал, с помощью публичных методов, доступ ко всем своим данным, которые требуются алгоритму (реализованному в классе S)?
В большинстве случаев стратегия это сервис, который получает данные и возвращает результат. Например: получает табель и считает зарплату сотруднику, доступ для этого ко всему классу ей не нужен.
Программа – это мысли спрессованные в код
Re: Вопрос по паттерну Стратегия (доступ к данным)
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет Всем!
МР>В соответствии с паттерном Стратегия нужно вынести алгоритм из класса C в отдельный класс S. Но как алгоритм, вынесенный в отдельный класс S, получит доступ к данным хранящимся в исходном классе C? Получается, что нужно чтобы исходный класс C обеспечивал, с помощью публичных методов, доступ ко всем своим данным, которые требуются алгоритму (реализованному в классе S)?
Анонимные классы и лямбды не подходят?
Re: Вопрос по паттерну Стратегия (доступ к данным)
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет Всем!
МР>В соответствии с паттерном Стратегия нужно вынести алгоритм из класса C в отдельный класс S. Но как алгоритм, вынесенный в отдельный класс S, получит доступ к данным хранящимся в исходном классе C? Получается, что нужно чтобы исходный класс C обеспечивал, с помощью публичных методов, доступ ко всем своим данным, которые требуются алгоритму (реализованному в классе S)?
Объект C будет теперь только инкапсулировать данные, и никакого поведения кроме предоставления данных.