show dbs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ: | |
Паттерны предназначены для решения типичных задач, возникающих в ходе проектирования. Любой паттерн описывает задачу, которая снова и снова возникает в нашей работе, а также принцип ее решения, причем таким образом, что это решение можно потом использовать миллион раз, ничего не изобретая заново. | |
Все паттерны обеспечивают возможность изменения некоторой части системы независимо от других частей. | |
-- Паттерн — решение задачи в контексте. | |
Не самое понятное определение, вы не находите? Не беспокойтесь, мы разберем все его составляющие — все эти контексты, задачи и решения: | |
- Контекстом называется ситуация, в которой применяется паттерн. Ситуация должна быть достаточно типичной и распространенной. | |
- Задачей называется цель, которой вы хотите добиться в контексте, в совокупности со всеми ограничениями, присущими контексту. | |
- Решением называется обобщенная архитектура, которая достигает заданной цели при соблюдении набора ограничений. Решение должно быть возможно применять снова |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН ШАБЛОННЫЙ МЕТОД | |
* | |
Задает «скелет» алгоритма в методе, оставляя определение реализации некоторых шагов субклассам. | |
Субклассы могут переопределять некоторые части алгоритма без изменения его структуры. | |
Методы внутри шаблонного метода могут быть пустыми, выдавать ошибку если не описаны в субклассе или иметь реализацию по умолчанию. | |
Применение: | |
1. Когда подклассы должны расширять базовый алгоритм, не меняя его структуры. | |
2. Когда у вас есть несколько классов, делающих одно и то же с незначительными отличиями. Если вы редактируете один |