Это происходит, как уже упоминалось, когда вы поддерживаете состояние стратегий.Позвольте мне объяснить это немного подробнее: скажем, у вас есть класс StandardCalculator.Теперь предположим, что у вас есть API (стратегии псевдонимов) для следующих операций
- Добавьте два числа
- Получите квадратный корень из суммы квадрата из двух чисел ir square_root (a_square + b + square)
- Разница двух чисел
Теперь есть два способа достижения решения: 1) Иметь конструктор, который принимает два числа 2) Клиент создает экземпляр и затем вызывает getSum (), get_square_root_sum (), get_difference () и т. д.
В этом случае, когда клиенту необходимо использовать эти API, ему необходимо будет создать новый экземпляр StandardCalculator
Другое решение:
- Создание синглтона класса
- Наличие API-интерфейсов getSum (int a, int b), get_square_root_sum (int a, int b), get_difference (int a, int b)и т. д.
Итак, здесь ваши API запрашивают параметры для реализации стратегии.
В этом случае разные клиенты могут использовать один и тот же экземпляр StandardCalculator для вызовараСтратегии аренды.