Содержание
- 2. Образец проектирования Образец (шаблон) проектирования – повторно используемое решение типичной проблемы проектирования. Состоит из*: Имени (Абстрактной)
- 3. Классификация образцов Структурные – решают задачи, связанные с отношением между классами (или другими сущностями) Поведенческие –
- 4. Базовые структурные образцы Abstract Server Adapter Proxy
- 5. Abstract Server: пример задачи Проблема: выключатель нельзя использовать для утюга и других приборов.
- 6. Abstract Server: пример решения Решение: поставить выключатель в зависимость от абстракции (применить DIP)
- 7. Abstract Server: образец Задача: исключить зависимость класса-клиента от реализации класса-сервера Решение: использовать абстракцию (абстрактный класс или
- 8. Abstract Server: замечания Практически любой класс, предоставляющий функциональность наружу пакета рассматривается как сервер => использование такого
- 9. Adapter: пример задачи Проблема: использовать выключатель для прибора с несовместимой по форме (но совместимой по напряжению)
- 10. Adapter: пример решения Решение: использовать переходник из одной розетки в другую
- 11. Adapter: образец Задача: адаптировать класс для использования через интерфейс, который класс изначально не реализует Решение: использовать
- 12. Proxy: пример задачи Клиент оперирует большим количеством изображений, при этом только некоторые будут отображены. Проблема: большой
- 13. Proxy: пример решения Решение: вместо настоящего изображения, используется заместитель, который загружает изображение только в случае его
- 14. Proxy: образец Задача: обеспечить контроль доступа к объектам класса: авторизацию, загрузку, удаленное обращение и т.д. Решение:
- 15. Области применения Proxy Доступ к удаленному объекту Доступ к «тяжелому» объекту: отложенная загрузка, выгрузка из памяти
- 16. Жизненный цикл объекта object: SomeClass Объект создан Объект инициализирован Первое использование объекта Последнее использование объекта Объект
- 17. Проблемы контроля жизненного цикла объектов Контроль жизненного цикла – cross-cutting concern Проблемы: Вызов конструктора невозможно сделать
- 18. Порождающие образцы RAII Lazy Initialization Singleton Abstract Factory Prototype Builder Dependency Injection
- 19. Resource Acquisition Is Initialization (RAII) Пример задачи: необходимо обеспечить простую и эффективную с точки зрения блокирования
- 20. Resource Acquisition Is Initialization (RAII) object: SomeClass Объект создан Объект инициализирован Первое использование объекта Последнее использование
- 21. RAII: конструирование Конструирование (захват ресурсов) должно производиться атомарным вызовом (конструктора или порождающей функции).
- 22. RAII: уничтожение С++: для стековых объектов в момент выхода переменной из области видимости Языки с динамической
- 23. RAII: Java FileOutputStream out = null; try{ out = new FileOutputStream (outFile); //… } finally{ out.close();
- 24. RAII: анализ Преимущества: Повышает логическую безопасность системы: невозможно использовать неинициализированные объекты. Обеспечивает четкий контроль за использованием
- 25. Отложенная инициализация (Lazy Initialization) Пример задачи: необходимо реализовать класс изображений, загружаемых с файловой системы. Класс должен
- 26. Отложенная инициализация: образец object: SomeClass Объект создан Получены данные инициализации Фактическая инициализация, первое использование объекта Получение
- 27. Отложенная инициализация: анализ Преимущества: Оптимизирует вычисления, избавляясь от инициализации ненужных объектов. Оптимизирует доступ к ресурсам, захватывая
- 28. Лирическое отступление: отложенное исполнение Отложенные вычисления: вычисления происходят не в момент вызова, а, либо в момент
- 29. Понятие чистой функции Чистая функция (referential transparent) – функция, значение которой полностью определяется ее параметрами, и
- 30. Singleton Задача: обеспечить создание ровно одного экземпляра класса. Решение: public class Singleton(){ private static Singleton instance
- 31. Singleton: анализ Применение: глобально-доступный инструментарий, который не может быть представлен обычными функциями (например, использует дополнительные конфигурационные
- 32. Abstract Factory: пример задачи Клиент не должен зависеть от реализации виджетов. Клиент может использовать их через
- 33. Abstract Factory: пример решения
- 34. Задача: обеспечить «полиморфный» конструктор Решение: конструирование выполняется с помощью объекта дополнительного полиморфного класса Последствия: Фабрика имеет
- 35. Prototype Пример задачи: см. «Abstract Factory» Решение: объекты создаются как клоны объектов-прототипов
- 36. Prototype: анализ Преимущества: простой дизайн прототип обладает свойствами класса, его можно применять для создания динамических объектных
- 37. Builder: задача Необходимо сконструировать сложный объект (например HTML-документ), что невозможно сделать атомарным вызовом. При этом необходимо,
- 38. Builder: образец Решение: Клиент использует build*- методы для инициализации объекта. Далее, объект востребуется атомарно посредством getProduct
- 39. Builder (GOF-вариант) Задача: Сконструировать сложный объект, причем алгоритм конструирования не должен зависеть от того, какой конкретно
- 40. IoC и жизненный цикл объекта Garbage Collector: вместо явного уничтожения объект «забывается» и далее обрабатывается некоторой
- 41. Инициализация зависимостей без применения Dependency Injection public interface ITool{ …} public class Fork implements ITool{ …
- 42. Тривиальный Dependency Injection (DI) на основе конструктора //constructor-based DI class public class Person2{ ITool tool; public
- 43. Преимущества DI Агрегирующие классы (т.е. те, для которых работает DI) не обязаны зависеть от конкретных классов
- 44. Проблемы с тривиальным DI DI реализует «божественная» сущность, зависящая от всей системы (нарушение ORR, LoD) Явно
- 45. DI на основе контейнера Контейнер универсален и не зависит от конкретных классов реализации. Зависимость устанавливается внешними
- 46. DI: Spring framework example //container-based DI class public class Person3 implements IPerson{ @Inject ITool tool; }
- 47. Поведенческие образцы Iterator Observer Immutable Object Memento Template method Strategy Command Chain of responsibilities
- 48. Iterator Задача: имеется составной объект (список, дерево), необходимо обеспечить доступ к отдельным его частям и перемещение
- 49. Observer Задача: автоматически оповещать объектов-наблюдателей об изменении состояния наблюдаемого объекта. Решение:
- 50. Immutable Object Неизменяемый объект: объект, получающий состояние при конструировании и не меняющий его. Изменение состояния моделируется
- 51. Immutable Object: анализ Преимущества: является необходимым условием для кода без побочных эффектов; существенно упрощает синхронизацию потоков/процессов;
- 52. Memento Задача: обеспечить сохранение текущего состояния объекта и его последующее восстановления (для передачи объекта по сети,
- 53. Memento: анализ Преимущества: Обеспечивает сериализацию (маршалинг) объектов без привязки к конкретному формату/протоколу передачи. Недостатки: Затруднено применение
- 54. Template Method Задача: реализовать универсальный класс Thread Решение:
- 55. Template Method: образец
- 56. Template Method: анализ Преимущества: Позволяет реализовать универсальный абстрактный алгоритм, пропускающий некоторые детали своей реализации. Детали реализуются
- 57. Strategy Задача: см. Template Method Решение:
- 58. Strategy: образец
- 59. Strategy: анализ Преимущества: Позволяет реализовать универсальный абстрактный алгоритм, пропускающий некоторые детали своей реализации. Детали реализуются в
- 60. Задача: интерфейс командной строки все команды имеют вид command_name [args] набор команд должен быть расширяем добавление
- 61. Решение
- 62. GeneralProcessor class GeneralProcessor{ //… public void executeCommand(Command command){ boolean isProcessed = false; for (IProcessor p: procs){
- 63. Использованные шаблоны Strategy (2 раза) Chain of Responsibilities Command Facade
- 64. Command-Query Separation (CQS) CQS – принцип построения интерфейсов. Каждый метод является либо командой, либо запросом но
- 66. Скачать презентацию


























































![Задача: интерфейс командной строки все команды имеют вид command_name [args] набор команд](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368746/slide-59.jpg)




Патогенез
Устав общероссийског о профсоюза образования
Водоемы нашего края
Сергей Александрович Есенин
БЦ Монетный Двор 67 кв.м. (для показа)
?
Сложные условия на Паскале. Операторные скобки
Костюмы
Кислород
Германия
Буква ю – показатель мягкости согласного звука
Экологические проблемы космического масштаба
Презентация на тему Речь (8 класс)
Selection Lee man FW18 c ценами
Международные отношения в 1920-30-е годы
Урок-путешествие по стране Терра Лигва
ПРИРОДА
Второстепенные члены предложения. Дополнение
Волейбол (англ.. volleyball от volley)
«Разнообразие природных комплексов на территории Краснодарского края»
Презентация на тему Расписание дня школьника
Веревочные узлы, их виды и способы вязки
Социальные права человека
МБОУ «СОШ №38» г. КурганаРаботу выполнила ученица 10 класса ВКовалёва ЕкатеринаРуководитель Учитель русского языка и литерату
Академическое красноречие и его виды, строение и языковые особенности
Культура ацтеков
Измерение высоты здания разными способами
2013