Содержание
- 2. Программа курса История создания Что такое шаблоны проектирования? Шаблоны GRASP Шаблоны GoF Рефакторинг Анти паттерны
- 3. История создания В 70-х годах двадцатого века архитектор Кристофер Александр (Christopher Alexander) составил набор шаблонов проектирования.
- 4. История создания В 1987 году Кент Бэк (Kent Beck) и Вард Каннигем (Ward Cunningham) взяли идеи
- 5. История создания В 1988 году Эрих Гамма (Erich Gamma) начал писать докторскую работу при цюрихском университете
- 6. История создания В 1989—1991 годах Джеймс Коплин (James Coplien) трудился над разработкой идиом для программирования на
- 7. История создания В этом же году Эрих Гамма заканчивает свою докторскую работу и переезжает в США,
- 8. Таксономия паттернов Idiom Напрямую связана с языком программирования Specific design Решение частной задачи Standard design Дополнительный
- 9. Что такое шаблоны проектирования? "Каждый паттерн описывает некую повторяющуюся проблему и ключ к ее разгадке, причем
- 10. Что такое шаблоны проектирования? Шаблоны проектирования (паттерн, pattern) — это эффективные способы решения характерных задач проектирования,
- 11. Польза Описывает решение целого класса абстрактных проблем Унификация терминологии, названий модулей и элементов проекта Позволяют, отыскав
- 12. Недостатки шаблоны могут консервировать громоздкую и малоэффективную систему понятий, разработанную узкой группой Когда количество шаблонов возрастает,
- 13. Итоги Шаблоны проектирования (паттерн, pattern) — это эффективные способы решения характерных задач проектирования; Шаблоны - не
- 14. GRASP Craig Larman Книга Applying UML and Patterns, 3ed. GRASP stands for General Responsibility Assignment Software
- 15. Полный список шаблонов GRASP Information Expert Creator Controller Low Coupling High Cohesion Polymorphism Pure Fabrication Indirection
- 16. Шаблон информационный эксперт (Information Expert)- GRASP Проблема В системе должна аккумулироваться, рассчитываться и т. п. необходимая
- 17. Эксперт. Пример Необходимо рассчитать общую сумму продажи. Имеются классы проектирования "Продажа", "ТоварПродажа" (продажа отдельного вида товара
- 18. Эксперт. Диаграмма классов
- 19. Создатель экземпляров класса (Creator) - GRASP Проблема "Кто" должен отвечать за создание экземпляров класса. Решение Назначить
- 20. Creator. Пример. необходимо определить, какой объект должен отвечать за создание экземпляра "ТоварПродажа". Логично, чтобы это был
- 21. Creator. Диаграмма последовательности
- 22. Creator. Критика Преимущества Использование этого паттерна не повышает связанности, поскольку созданный класс, как правило, виден только
- 23. Контроллер (Controller) - GRASP Проблема "Кто" должен отвечать за обработку входных системных событий? Решение Обязанности по
- 24. Controller. Критика Преимущества Удобно накапливать информацию о системных событиях (в случае, если системные операции выполняются в
- 25. Низкая связанность (Low Coupling) Проблема Обеспечить низкую связанность при создании экземпляра класса и связывании его с
- 26. Степень связанности (coupling) - это мера, определяющая насколько жестко один элемент связан с другими элементами, либо
- 27. Класс с высокой степенью связанности (или жестко связанный) зависит от множества других классов. Однако наличие таких
- 28. Низкая связанность. Пример
- 29. Высокое зацепление (High Cohesion) - GRASP Проблема Необходимо обеспечить выполнение объектами разнородных функций.(Как обеспечить возможность управления
- 30. Зацепление (cohesion) (или более точно, функциональное зацепление) - это мера связанности и сфокусированности обязанностей класса. Считается
- 31. Класс с низкой степенью зацепления выполняет много разнородных функций или несвязанных между собой обязанностей. Такие классы
- 32. Как правило, класс с высокой степенью зацепления содержит сравнительно небольшое количество методов, которые функционально тесно связаны
- 33. Очень слабое зацепление. Только один класс отвечает за выполнение множества операций в самых различных функциональных областях.
- 34. Сильное зацепление. Класс имеет среднее количество обязанностей из одной функциональной области и для выполнения своих задач
- 35. Высокое зацепление. Критика Преимущества Классы с высокой степенью зацепления просты в поддержке и повторном использовании. Недостатки
- 36. Полиморфизм (Polymorphism) - GRASP Проблема Как обрабатывать альтернативные варианты поведения на основе типа? Как заменять подключаемые
- 37. Полиморфизм. Пример
- 38. Полиморфизм. Критика Преимущества Впоследствии легко расширять и модернизировать систему. Недостатки Не следует злоупотреблять добавлением интерфейсов с
- 39. Искусственный (Pure Fabrication) - GRASP Проблема Какой класс должен обеспечивать реализацию паттернов "Высокое зацепление", и "Низкая
- 40. Искусственный. Пример Какой класс должен сохранять экземпляры класса "Продажа" в реляционной базе данных? Если возложить эту
- 41. Искусственный. Пример Решением данной проблемы будет создание нового класса "ПостоянноеХранилище", ответственного за сохранение обьектов некоторого вида
- 42. Искуственный. Критика Преимущества Класс "ПостоянноеХранилище" будет обладать низкой степенью связывания и высокой степенью зацепления. Недостатки Данным
- 43. Перенаправление (Indirection) - GRASP Проблема Как перераспределить обязанности обьектов, чтобы обеспечить отсутствие прямого связывания? Решение Присвоить
- 44. Устойчивый к изменениям (Protected Variations) - GRASP Проблема Как спроектировать систему так, чтобы изменение одних ее
- 45. Устойчивый к изменениям. Пример
- 47. Скачать презентацию