2. Любой дурак может написать код, понятный компьютеру.
Хороший программист пишет код, понятный человеку.
(с) Мартин Фаулер
3. Шаблон
проектирования или паттерн (анг. design
pattern) — повторимая архитектурная
конструкция, представляющая собой
решение проблемы проектирования в
рамках некоторого часто возникающего
контекста.
Бальзам на душу программиста. Зачем? Почему? Какие?
4. 4 Колеса - это шаблон
проектирования
сформированный
временем!
7. Пораждающие паттерны.
шаблоны, по которым можно создать новый
автомобиль и как это лучше сделать.
Singleton
cистема независима от способа создания, композиции и
представления объектов
абстрагируют процесс инстанцирования.
У класса есть только один экземпляр, и предоставляется к
нему глобальная точка доступа.
+ контролируемый доступ к единственному экземпляру.
- Вредность глобальных переменных. Немасшатибруемый
проект.
8. Поведенческие паттерны.
Strategy
определяют алгоритмы и способы реализации взаимодействия различных объектов и классов.
Используется для выбора различных путей получения
результата.
Отделение процедуры выбора алгоритма от его
реализации.
+ интерфейс кастомизации не совпадает с
публичным интерфейсом и может быть куда
более удобным
- требуется проектировать класс с
возможностью регистрации стратегий.
9. Струтурирующие паттерны.
Facade
помогают внести порядок и научить разные объекты более правильно взаимодействовать друг с другом.
делать сложные вещи простыми.
унифицированный интерфейс с набором разрозненных
реализаций или интерфейсов.
А всего-то надо повернуть ключ зажигания!
Автомобиль
подать питание с
аккумулятора подать питание на инжектор
включить генератор
11. Copy and Paste Programming
Spaghetti code
Golden hammer
Magic numbers Hard codeSoft code
Accidental complexity
Boat anchor
Reinventing the wheel
Reinventing the square wheel
Lava flow
Programming by permutation
Blind faith
God Object
12. Причины использовать паттерны
• Описывает решение целого класса абстрактных проблем.
• Полиморфизм (использовать архитекртурное решение повторно).
• Помогает решать новую задачу не с нуля.
• Улучшить качество документации и сопровождения
существующих систем.
• Антипаттернотерапия