==================================================================================================== Design Patterns Russian version.
- Выдели аспекты приложения, которые могут изменяться, и отделите их от постоянных.
- Программируй на уровне интерфейса, а не реализации.
Назначение. Определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Позволяет изменять алгоритмы независимо от клиентов, которые ими пользуются. Другими словами: инкапсулирует определённое поведение с возможностью его подмены.
- Паттерн "Стратегия" не определяет, как получены входные данные. Эти данные могут передаваться в аргументах метода AlgoritmInterface, если стратегия может получить ссылку на сам контекст и получать требуемые данные самостоятельно.
- Паттерн "Стратегия" не определяет, каким образом контекст получает экземпляр стратегии. Контекст может получать её в аргументах конструктора, через метод, свойство или у третьей стороны.
.NET 4.0+:
- Lazy .NET 3.5-:
- No exceptions & no Lazy (Без исключений и без ленивости) - Field initializer (Инициализатор статического поля)
- Other (другие случаи) - Double check lock (Блокировка с двойной проверкой) Ambient Context - конфигурируемый синглтон. Применимость:
- Синглтон без видимого состояния. Утилиты, справка.
- Настраиваемый контекст. Зависимости типа Ambient Context, в качестве теста.
- Минимальная область использования.
- Явное использование синглтона.