Название и классификацияTemplate Method (-шаблонный метод) – поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом.
Слайд 2
Название и классификация Template Method (-шаблонный метод) – поведенческий шаблон
проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые
шаги алгоритма, не изменяя его структуру в целом.
Слайд 3
Назначение Шаблонный метод определяет основу алгоритма и позволяет подклассам
переопределить некоторые шаги алгоритма, не изменяя его структуру в
целом
Слайд 4
Применимость Однократное использование инвариантной части алгоритма Избежание дублирования кода Управление расширениями
подклассов
Слайд 5
UML-диаграмма классов паттерна Template Method Реализация метода templateMethod() вызывает методы stepOne(), stepTwo() и stepThree(). Метод stepTwo() является
"замещающим" методом. Он объявлен в базовом классе, а определяется
в производных классах. Каркасы приложений широко используют паттерн Тemplate Method. Весь повторно используемый код определяется в базовых классах каркаса, нужное поведение системы клиенты определяют в создаваемых производных классах.
Слайд 6
UML-диаграмма классов паттерна Template Method
Слайд 7
Пример паттерна Template Method Паттерн Template Method определяет основу
алгоритма и позволяет подклассам изменить некоторые шаги этого алгоритма
без изменения его общей структуры. Строители зданий используют шаблонный метод при проектировании новых домов. Здесь могут использоваться уже существующие типовые планы, в которых модифицируются только отдельные части.
Слайд 8
Использование паттерна Template Method Исследуйте алгоритм и решите, какие
шаги являются стандартными, а какие должны определяться подклассами. Создайте новый
абстрактный базовый класс, в котором будет реализован принцип "не звоните нам, мы сами вам позвоним". Поместите в новый класс основу алгоритма (шаблонный метод) и определения стандартных шагов. Для каждого шага, требующего различные реализации, определите "замещающий" виртуальный метод. Этот метод может иметь реализацию по умолчанию или быть чисто виртуальным. Вызовите "замещающий" метод из шаблонного метода. Создайте подклассы от нового абстрактного базового класса и реализуйте в них "замещающие" методы.
Слайд 9
Результаты Шаблонные методы вызывают операции следующих видов: Конкретные операции Конкретные операции
из класса AbstractClass Примитивные операции Фабричные методы Операции-зацепки
Слайд 10
Реализация Использование контроля доступа в C++ Сокращение числа примитивных операций Соглашение