Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
24 слайда
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
1.51 MB
Просмотров:
63
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Паттерн Builder строитель](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img0.jpg)
Содержание слайда: Паттерн Builder (строитель)
Идрисова И. А.
№2 слайд![... Абстрактная фабрика](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img1.jpg)
Содержание слайда: ... Абстрактная фабрика
№3 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img2.jpg)
№4 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img3.jpg)
№5 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img4.jpg)
№6 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img5.jpg)
№7 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img6.jpg)
№8 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img7.jpg)
№9 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img8.jpg)
№10 слайд![Структура паттерна Builder](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img9.jpg)
Содержание слайда: Структура паттерна Builder
№11 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img10.jpg)
№12 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img11.jpg)
№13 слайд![Отношения между участниками](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img12.jpg)
Содержание слайда: Отношения между участниками
Клиент конфигурирует распорядителя (Director) экземпляром конкретного строителя.
Распорядитель вызывает методы строителя для конструирования частей продукта.
Конкретный строитель создает продукт и следит за его конструированием.
Конкретный строитель представляет интерфейс для доступа к продукту.
№14 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img13.jpg)
№15 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img14.jpg)
№16 слайд![Пример кода на С](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img15.jpg)
Содержание слайда: Пример кода на С++
№17 слайд![Product Product class Pizza](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img16.jpg)
Содержание слайда: // Product
// Product
class Pizza
{
private:
std::string dough;
std::string sauce;
std::string topping;
№18 слайд![Director Director class](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img17.jpg)
Содержание слайда: // Director
// Director
class Waiter
{
private:
PizzaBuilder* pizzaBuilder;
public:
Waiter() : pizzaBuilder(NULL) {}
~Waiter() { }
void SetPizzaBuilder(PizzaBuilder* b) { pizzaBuilder = b; }
std::shared_ptr<Pizza> GetPizza() { return pizzaBuilder->GetPizza(); }
void ConstructPizza()
{
pizzaBuilder->createNewPizzaProduct();
pizzaBuilder->buildDough();
pizzaBuilder->buildSauce();
pizzaBuilder->buildTopping();
}
}; // Клиент заказывает две пиццы.
№19 слайд![Abstract Builder Abstract](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img18.jpg)
Содержание слайда: // Abstract Builder
// Abstract Builder
class PizzaBuilder
{
protected:
std::shared_ptr<Pizza> pizza;
public:
PizzaBuilder() {}
virtual ~PizzaBuilder() {}
std::shared_ptr<Pizza> GetPizza() { return pizza; }
void createNewPizzaProduct() { pizza.reset (new Pizza); }
virtual void buildDough()=0;
virtual void buildSauce()=0;
virtual void buildTopping()=0;
}; ----> …
№20 слайд![ConcreteBuilder class](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img19.jpg)
Содержание слайда: // ConcreteBuilder
class SpicyPizzaBuilder : public PizzaBuilder
{
public:
SpicyPizzaBuilder() : PizzaBuilder() {}
~SpicyPizzaBuilder() {}
void buildDough() { pizza->SetDough("pan baked"); }
void buildSauce() { pizza->SetSauce("hot"); }
void buildTopping() { pizza->SetTopping("pepperoni and salami"); }
};
№21 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img20.jpg)
№22 слайд![](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img21.jpg)
№23 слайд![Результаты использования](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img22.jpg)
Содержание слайда: Результаты использования паттерна
Есть возможность изменять внутреннею структуру создаваемого продукта (или создать новый продукт).
продукт конструируется через абстрактный интерфейс класса Builder, для добавления нового продукта достаточно определить новый вид строителя (т.е. реализовать новый подкласс класса Builder).
Повышение модульности за счет разделения распорядителя и строителя.
Каждый строитель имеет весь необходимый код для пошагового построения продукта.
Поэтому он может использоваться разными распорядителями для построения вариантов продукта из одних и тех же частей.
Пошаговое построение продукта позволяет обеспечить более пристальный контроль над процессом конструирования
в отличие от других порождающих паттернов, которые создают продукт мгновенно.
№24 слайд![Лабораторная работа дедлайн -](/documents_6/ff275f79b1070ffdca35be0b3af8e0ff/img23.jpg)
Содержание слайда: Лабораторная работа №1 (дедлайн - 26.02)
Порядок выполнения работы:
1. С использованием одного из языков программирования (C++) реализовать шаблоны проектирования
а) Шаблон “Абстрактная фабрика”. Проект “Заводы по производству автомобилей”. В проекте должно быть реализована возможность создавать автомобили различных типов на разных заводах.
б) Хлеб может иметь различную комбинацию компонентов: ржаной и пшеничной муки, соли, пищевых добавок. И нам надо обеспечить выпечку разных сортов хлеба. Для разных сортов хлеба может варьироваться конкретный набор компонентов, не все компоненты могут использоваться. И для этой задачи применим паттерн Builder.
2. Разработать UML модель