Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Паттерны проектирования (Design patterns)

Содержание

Предлагается следующая общая классификация паттернов по категориям их применения: Архитектурные паттерныПаттерны проектированияПаттерны анализаПаттерны тестированияПаттерны реализации
Паттерны проектирования (Design patterns)Идрисова Индира Предлагается следующая общая классификация паттернов по категориям их применения: Архитектурные паттерныПаттерны проектированияПаттерны анализаПаттерны тестированияПаттерны реализации Признаки плохого кодадублирование кода;длинный метод;большой класс;длинный список параметров;классы данных;несгруппированные данные. Причины возникновения плохого кодаЧастые изменения в требованиях, противоречащие исходной архитектуре;недостаточно времени сделать Настоящие  причины возникновения плохого кодаНепрофессионализмЛень Закон Леблана«Потом равносильно никогда» Чистый код«Я люблю, чтобы мой код был элегантным и эффективным. Логика должна Приемы чистого кодаИменование переменных;правильная работа с функциями;комментирование кода;форматирование;обработка ошибок;тестирование. Объектно-ориентированное проектированиеПроектирование объектно-ориентированных программ – нелегкое дело, а если их нужно использовать Правильный дизайнПравильный дизайн – это гибкий и пригодный для повторного использования дизайн. Паттерны проектированияПаттерн проектирования — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования Что такое паттерны (шаблоны) проектирования?Эффективные способы решения характерных задач проектированияОбобщенное описание решения ПользаКаждый паттерн описывает решение целого класса проблемКаждый паттерн имеет известное имяоблегчается взаимодействие Шаблоны проектированияВ проектировании ПО часто встречаются проблемы, которые уже решались ранее в В этом случае разработчикам могут помочь, программные шаблоны, включая архитектурные шаблоны и Понятие шаблона (pattern) впервые было предложено Christopher Alexander для разработки архитектуры зданий Понятие паттерна (шаблона)При ООП решения описываются в терминах объектов и интерфейсов, а Классификация паттерновПорождающие (Creational)Структурные (Structural)Поведенческие (Behavioral)   1. Порождающие паттерныПорождающие паттерны проектирования абстрагируют процесс создания объектов класса. Они помогают 1.1. Паттерн Abstract Factory (Абстрактная фабрика)Название паттернаAbstract Factory / Абстрактная фабрикадругие названия: Когда следует испрользовать паттерн Abstract Factoryсистема не должна зависеть от того, как Пример – игра «Супер Ралли»  (гонка на автомобилях) Одно из требований: Предлагаемая реализацииСоздается интерфейс ФабрикаСоставляющих – предназначен для создания конкретных классов (фабрик), которые Диаграмма классов Клиентский код, который «собирает» автомобиль из деталей, использует интерфейсную ссылку ФабрикаСоставляющих, методы Общая структура паттерна  Abstract Factory Участники паттерна Abstract FactoryИнтерфейс AbstractFactory — абстрактная фабрикаПредоставляет общий интерфейс для создания Отношения между участникамиКлиент знает только о существовании абстрактной фабрики и абстрактных продуктов.Для Достоинства использования паттернаПозволяет изолировать конкретные классы продуктов. Клиент знает о существовании только Недостаток использовани паттернаТрудно поддерживать новые виды продуктов, которые содержат, другой состав компонент. Практический пример использования паттернаЗадача – разработать ПО для магазина компьютерной техники. Одно Допустим, что программа должна создавать шаблоны типичных конфигураций двух типов: домашняя конфигурация; Класс персонального компьютера Рс Класс, представляющий конфигурацию системного блока:public class Pc{ Интерфейс фабрики создания конфигурации системного блокаОтветственность за их создание заданной конфигурации надо Для создания компонентов конфигураций определяем классы конкретных фабрик HomePcFactory OfficePcFactory. В каждом Класс HomePcFactoryФабрика для создания Класс OfficePcFactory Фабрика для создания Класс PcConfiguratorОтветственен за создание объекта типа Рс выбранного типаpublic class PcConfigurator { Полная диаграмма классов Класс PcConfigurator принимает экземпляр конкретной фабрики и с помощью её методов создает ВыводыШаблон Фабрика – это мощный инструмент. Она может оказаться ценным инструментом, обеспечивающим ВыводПрименяйте паттерны проектирования Заблуждение №1Паттерны гарантируют возможность повторного использования программного обеспечения, повышение производительности, отсутствие разногласий и т.д. Заблуждение №2Паттерны предоставляют готовые архитектурные решения Преимущества паттернов проектированияИспользование предыдущего опыта экспертов.Улучшение взаимопонимания разработчиков.Альтернатива документации приложений.Упрощение реструктуризации системы.
Слайды презентации

Слайд 2 Предлагается следующая общая классификация паттернов по категориям их

Предлагается следующая общая классификация паттернов по категориям их применения: Архитектурные паттерныПаттерны проектированияПаттерны анализаПаттерны тестированияПаттерны реализации

применения:
Архитектурные паттерны
Паттерны проектирования
Паттерны анализа
Паттерны тестирования
Паттерны реализации


Слайд 3 Признаки плохого кода
дублирование кода;
длинный метод;
большой класс;
длинный список параметров;
классы

Признаки плохого кодадублирование кода;длинный метод;большой класс;длинный список параметров;классы данных;несгруппированные данные.

данных;
несгруппированные данные.


Слайд 4 Причины возникновения плохого кода
Частые изменения в требованиях, противоречащие исходной

Причины возникновения плохого кодаЧастые изменения в требованиях, противоречащие исходной архитектуре;недостаточно времени

архитектуре;
недостаточно времени сделать работу качественно;
глупый менеджер/начальник/заказчик и т.д.
Ваш вариант.


Слайд 5 Настоящие причины возникновения плохого кода
Непрофессионализм
Лень

Настоящие причины возникновения плохого кодаНепрофессионализмЛень

Слайд 6 Закон Леблана
«Потом равносильно никогда»

Закон Леблана«Потом равносильно никогда»

Слайд 7 Чистый код
«Я люблю, чтобы мой код был элегантным

Чистый код«Я люблю, чтобы мой код был элегантным и эффективным. Логика

и эффективным. Логика должна быть достаточно прямолинейной, чтобы ошибкам

было трудно спрятаться; зависимости – минимальными, чтобы упростить сопровождение; обработка ошибок – полной, в соответствии с выбранной стратегией; а производительность – близкой к оптимальной, чтобы не искушать людей загрязнять код беспринципными оптимизациями.»

Бьерн Страуструп

автор языка C++


Слайд 8 Приемы чистого кода
Именование переменных;
правильная работа с функциями;
комментирование кода;
форматирование;
обработка

Приемы чистого кодаИменование переменных;правильная работа с функциями;комментирование кода;форматирование;обработка ошибок;тестирование.

ошибок;
тестирование.


Слайд 9 Объектно-ориентированное проектирование
Проектирование объектно-ориентированных программ – нелегкое дело, а

Объектно-ориентированное проектированиеПроектирование объектно-ориентированных программ – нелегкое дело, а если их нужно

если их нужно использовать повторно, то все становится еще

сложнее.

Эрих Гамма
Автор книги Design Patterns


Слайд 10 Правильный дизайн
Правильный дизайн – это гибкий и пригодный

Правильный дизайнПравильный дизайн – это гибкий и пригодный для повторного использования

для повторного использования дизайн. Он должен, с одной стороны,

соответствовать решаемой задаче, с другой — быть общим, чтобы учесть все требования, которые могут возникнуть в будущем.

Слайд 11 Паттерны проектирования
Паттерн проектирования — повторимая архитектурная конструкция, представляющая

Паттерны проектированияПаттерн проектирования — повторимая архитектурная конструкция, представляющая собой решение проблемы

собой решение проблемы проектирования в рамках некоторого часто возникающего

контекста.

Слайд 12 Что такое паттерны (шаблоны) проектирования?
Эффективные способы решения характерных

Что такое паттерны (шаблоны) проектирования?Эффективные способы решения характерных задач проектированияОбобщенное описание

задач проектирования
Обобщенное описание решения задачи, которое можно использовать в

различных ситуациях
ОО паттерны проектирования часто показывают отношения и взаимодействия между классами и объектами
Алгоритмы не являются паттернами, т.к. решают задачу вычисления, а не программирования

Слайд 13 Польза
Каждый паттерн описывает решение целого класса проблем
Каждый паттерн

ПользаКаждый паттерн описывает решение целого класса проблемКаждый паттерн имеет известное имяоблегчается

имеет известное имя
облегчается взаимодействие между разработчиками
Правильно сформулированный паттерн проектирования

позволяет, отыскав удачное решение, пользоваться им снова и снова
Шаблоны проектирования не зависят от языка программирования.

Слайд 14 Шаблоны проектирования
В проектировании ПО часто встречаются проблемы, которые

Шаблоны проектированияВ проектировании ПО часто встречаются проблемы, которые уже решались ранее

уже решались ранее в других проектах.
В связи с тем,

что контексты, в которых данная проблема решалась, могут различаются
(другой тип приложения, другая платформа или другой язык программирования),
все обычно заканчивается повторением проектирования и реализации данного решения,
тем самым возникает ситуация «повторного изобретения колеса».


Слайд 15
В этом случае разработчикам могут помочь, программные шаблоны,

В этом случае разработчикам могут помочь, программные шаблоны, включая архитектурные шаблоны

включая
архитектурные шаблоны и
шаблоны проектирования.
Они позволяют избежать

ненужного повторного проектирования и реализации.




Слайд 16
Понятие шаблона (pattern) впервые было предложено Christopher Alexander

Понятие шаблона (pattern) впервые было предложено Christopher Alexander для разработки архитектуры

для разработки архитектуры зданий и описаны в его книге
«The

Timeless Way of Building» (Alexander 1979).
«Любой паттерн описывает задачу, которая снова и снова возникает в нашей работе, а также принцип ее решения, причем таким образом, что это решение можно потом использовать миллион раз, ничего не изобретая заново» (Александр Кристофер, архитектор).
Такое определение верно и в отношении паттернов объектно-ориентированного проектирования.



Слайд 17 Понятие паттерна (шаблона)
При ООП решения описываются в терминах

Понятие паттерна (шаблона)При ООП решения описываются в терминах объектов и интерфейсов,

объектов и интерфейсов, а не стен и дверей, но

в обоих случаях смысл паттерна - предложить решение определенной задачи в конкретном контексте.
Под паттернами ОО проектирования понимается описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте.
В области ПО использование шаблонов проектирования было предложено и развито Gamma, Helms, Johnson и Vlissides в их книге «Design Patterns (1995)», в которой они описали 23 шаблона проектирования.






Слайд 18 Классификация паттернов
Порождающие (Creational)
Структурные (Structural)
Поведенческие (Behavioral)  

Классификация паттерновПорождающие (Creational)Структурные (Structural)Поведенческие (Behavioral)  

Слайд 20 1. Порождающие паттерны
Порождающие паттерны проектирования абстрагируют процесс создания

1. Порождающие паттерныПорождающие паттерны проектирования абстрагируют процесс создания объектов класса. Они

объектов класса.
Они помогают сделать систему независимой от способа

создания, композиции, и представления объектов.
Позволяют ответить на вопрос: кто, когда и как создает объекты в системе.
Abstract Factory (Абстрактная фабрика)
Buildеr (Строитель)
Factory Method (Фабричный метод)
Prototype (Прототип)
Singleton (Одиночка)

Слайд 21 1.1. Паттерн Abstract Factory (Абстрактная фабрика)
Название паттерна
Abstract Factory /

1.1. Паттерн Abstract Factory (Абстрактная фабрика)Название паттернаAbstract Factory / Абстрактная фабрикадругие

Абстрактная фабрика
другие названия:
Toolkit / Инструментарий
Factory/Фабрика
Цель паттерна
предоставить интерфейс

для проектирования и реализации семейства, взаимосвязанных и взаимозависимых объектов, не указывая конкретных классов, объекты которых будут создаваться.

Слайд 22 Когда следует испрользовать паттерн Abstract Factory
система не должна

Когда следует испрользовать паттерн Abstract Factoryсистема не должна зависеть от того,

зависеть от того, как в ней создаются и компонуются

объекты;
объекты, входящие в семейство, должны использоваться вместе;
система должна конфигурироваться одним из семейств объектов;
надо предоставить интерфейс библиотеки, не раскрывая её внутреннюю реализацию.


Слайд 23 Пример – игра «Супер Ралли» (гонка на автомобилях)

Пример – игра «Супер Ралли» (гонка на автомобилях) Одно из требований:


Одно из требований: игрок должен иметь возможность выбирать себе

автомобиль для участия в гонках.
Каждый из автомобилей состоит из специфического набора составляющих:
двигатель, колес, кузов, коробка передач, бензобак
определяют возможности автомобиля (скорость, маневренность, устойчивость к повреждениям, длительность непрерывной гонки без перезаправки и д.р.).
Может быть много разных типов автомобилей.
Их количество может изменяться динамически (например, в зависимости от опыта игрока).
Клиентский код, выполняющий конфигурирование автомобиля специфичным семейством составляющих, не должен зависеть от типа выбранного автомобиля.



Слайд 24 Предлагаемая реализации
Создается интерфейс ФабрикаСоставляющих – предназначен для создания

Предлагаемая реализацииСоздается интерфейс ФабрикаСоставляющих – предназначен для создания конкретных классов (фабрик),

конкретных классов (фабрик), которые будут создавать семейства составляющих для

каждого конкретного типа автомобиля.
Методы этого класса должны возвращать ссылки на абстрактные составляющие, что позволит в конкретных классах-фабриках, создавать конкретные составляющие (подклассы абстрактных составляющих).

Слайд 25 Диаграмма классов

Диаграмма классов

Слайд 26
Клиентский код, который «собирает» автомобиль из деталей, использует

Клиентский код, который «собирает» автомобиль из деталей, использует интерфейсную ссылку ФабрикаСоставляющих,

интерфейсную ссылку ФабрикаСоставляющих,
методы данного интерфейса возвращают ссылки на

абстрактные составляющие.
Можно передавать клиенту объект конкретной фабрики, которая создает семейство объектов конкретных составляющих.


Слайд 27 Общая структура паттерна Abstract Factory

Общая структура паттерна Abstract Factory

Слайд 28 Участники паттерна Abstract Factory
Интерфейс AbstractFactory — абстрактная фабрика
Предоставляет общий

Участники паттерна Abstract FactoryИнтерфейс AbstractFactory — абстрактная фабрикаПредоставляет общий интерфейс для

интерфейс для создания семейства продуктов.
Класс ConcreteFactory — конкретная

фабрика
Реализует интерфейс AbstractFactory и создает семейство конкретных продуктов.
Метод интерфейса AbstractProdact — абстрактный продукт
Предоставляет интерфейс абстрактного продукта, ссылку на который возвращают методы фабрик.
Метод класса ConcreteProdact — конкретный продукт
Реализует конкретный тип продукта, который создается конкретной фабрикой.


Слайд 29 Отношения между участниками
Клиент знает только о существовании абстрактной

Отношения между участникамиКлиент знает только о существовании абстрактной фабрики и абстрактных

фабрики и абстрактных продуктов.
Для создания семейства конкретных продуктов клиент

конфигурируется соответствующим экземпляром конкретной фабрики.
Методы конкретной фабрики создают экземпляры конкретных продуктов, возвращая их в виде ссылок на соответствующие абстрактные продукты.



Слайд 30 Достоинства использования паттерна
Позволяет изолировать конкретные классы продуктов.
Клиент

Достоинства использования паттернаПозволяет изолировать конкретные классы продуктов. Клиент знает о существовании

знает о существовании только абстрактных продуктов, что ведет к

упрощению его архитектуры.
Упрощает замену семейств продуктов.
Для использования другого семейства продуктов достаточно конфигурировать клиентский код соответствующий конкретной фабрикой.
Дает гарантию сочетаемости продуктов.
Так как каждая конкретная фабрика создает группу продуктов, то она и следит за обеспечением их сочетаемости.


Слайд 31 Недостаток использовани паттерна
Трудно поддерживать новые виды продуктов, которые

Недостаток использовани паттернаТрудно поддерживать новые виды продуктов, которые содержат, другой состав

содержат, другой состав компонент.
Для добавления нового продукта необходимо

изменять всю иерархию фабрик, а также клиентский код.


Слайд 32 Практический пример использования паттерна
Задача – разработать ПО для

Практический пример использования паттернаЗадача – разработать ПО для магазина компьютерной техники.

магазина компьютерной техники.
Одно из требований – быстрое создание

конфигурации системного блока.
Предположим, что в состав конфигурации системного блока входят:
бокс (Box);
процессор (Processor);
системная плата (MainBoard);
жесткий диск (Hdd);
оперативная память (Memory).





Слайд 33
Допустим, что программа должна создавать шаблоны типичных конфигураций

Допустим, что программа должна создавать шаблоны типичных конфигураций двух типов: домашняя

двух типов:
домашняя конфигурация;
офисная конфигурация.
Для всех этих конфигураций

определим абстрактный класс.
Конкретные модели составляющих будем определять путем наследования от абстрактного базового класса,


Слайд 34 Класс персонального компьютера Рс
Класс, представляющий конфигурацию системного

Класс персонального компьютера Рс Класс, представляющий конфигурацию системного блока:public class Pc{

блока:
public class Pc
{
public Box Box { get;

set; }
public Processor Processor { get; set; }
public MainBoard MainBoard { get; set; }
public Hdd Hdd { get; set; }
public Memory Memory { get; set; }
}


Слайд 35 Интерфейс фабрики создания конфигурации системного блока
Ответственность за их

Интерфейс фабрики создания конфигурации системного блокаОтветственность за их создание заданной конфигурации

создание заданной конфигурации надо возложить на один класс-фабрику.
Эта

фабрика должна реализовать интерфейс IPcFactory .
Методы это интерфейса возвращают ссылки на классы абстрактных продуктов.

public interface IPcFactory
{
Box CreateBox ( ) ;
Processor CreateProcessor ( ) ;
MainBoard CreateMainBoard ( ) ;
Hdd CreateHddO ;
Memory CreateMemory ( ) ;
}



Слайд 36
Для создания компонентов конфигураций определяем классы конкретных фабрик

Для создания компонентов конфигураций определяем классы конкретных фабрик HomePcFactory OfficePcFactory. В


HomePcFactory
OfficePcFactory.
В каждом из create-методов этих классов создается

объект конкретного класса продукта, соответствующего типу конфигурации.


Слайд 37 Класс HomePcFactory
Фабрика для создания "домашней" конфигурации системного блока

Класс HomePcFactoryФабрика для создания

ПК
public class HomePcFactory : IPcFactory
{
public

Box CreateBox()
{ return new SilverBox(); }
public Processor CreateProcessor()
{return new IntelProcessor(); }
public MainBoard CreateMainBoard()
{ return new MSIMainBord(); }
public Hdd CreateHddO { return new SamsungHDD(); }
public Memory CreateMemory()
{ return new Ddr2Memory();}
}


Слайд 38 Класс OfficePcFactory
Фабрика для создания "офисной" конфигурации системного

Класс OfficePcFactory Фабрика для создания

блока ПК
public class OfficePcFactory : IPcFactory
{

public Box CreateBox()
{return new BlackBoxf); }
public Processor CreateProcessor()
{ return new AmdProcessor();}
public MainBoard CreateMainBoard()
{return new AsusMainBord(); }
public Hdd CreateHdd{) {return new LGHDD ();}
public Memory CreateMemory()
{ return new DdrMemory(); }
}

Слайд 39 Класс PcConfigurator
Ответственен за создание объекта типа Рс выбранного

Класс PcConfiguratorОтветственен за создание объекта типа Рс выбранного типаpublic class PcConfigurator

типа
public class PcConfigurator {
public IPcFactory PcFactory {

get; set; }
public void Configure(Pc pc) {
pc.Box = PcFactory.CreateBox();
pc. MainBoard = PcFactory.CreateMainBoard();
pc.Hdd = PcFactory.CreateHdd() ;
pc.Memory = PcFactory.CreateMemory();
pc.Processor = PcFactory.CreateProcessor();
}
}


Слайд 40 Полная диаграмма классов

Полная диаграмма классов

Слайд 41
Класс PcConfigurator принимает экземпляр конкретной фабрики и с

Класс PcConfigurator принимает экземпляр конкретной фабрики и с помощью её методов

помощью её методов создает составляющие персонального компьютера.
PcConfigurator работает

с интерфейсной ссылкой IPcFactory и ничего не знает о конкретных фабриках конфигураций и конкретных составляющих.
Cила абстрактной фабрики
конкретную фабрику можно определять на этапе выполнения программы
клиентский код не зависит от конкретных фабрик или конкретных продуктов.


Слайд 42 Выводы
Шаблон Фабрика – это мощный инструмент.
Она может

ВыводыШаблон Фабрика – это мощный инструмент. Она может оказаться ценным инструментом,

оказаться ценным инструментом,
обеспечивающим согласование с принципом DIP, (позволяет

модулям верхнего уровня создавать экземпляры классов, не становясь зависимыми от конкретных реализаций этих классов).
дают возможность подменять целые семейства реализаций групп классов.
Но Фабрики вносят сложность, без которой часто можно обойтись.
Повсеместное их применение редко бывает оптимальным курсом.



Слайд 43 Вывод
Применяйте паттерны проектирования

ВыводПрименяйте паттерны проектирования

Слайд 44 Заблуждение №1
Паттерны гарантируют возможность повторного использования программного обеспечения,

Заблуждение №1Паттерны гарантируют возможность повторного использования программного обеспечения, повышение производительности, отсутствие разногласий и т.д.

повышение производительности, отсутствие разногласий и т.д.


Слайд 45 Заблуждение №2
Паттерны предоставляют готовые архитектурные решения

Заблуждение №2Паттерны предоставляют готовые архитектурные решения

  • Имя файла: patterny-proektirovaniya-design-patterns.pptx
  • Количество просмотров: 146
  • Количество скачиваний: 1