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

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


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

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

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

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

Презентация на тему Паттерн Builder (строитель)

... Абстрактная фабрика
Паттерн Builder (строитель) Идрисова И. А. ... Абстрактная фабрика Структура паттерна Builder Отношения между участникамиКлиент конфигурирует распорядителя (Director) экземпляром конкретного строителя.Распорядитель вызывает методы строителя Пример кода на С++ // Productclass Pizza{private:  std::string dough;  std::string sauce;  std::string topping;public: // Directorclass Waiter{private:  PizzaBuilder* pizzaBuilder;public:  Waiter() : pizzaBuilder(NULL) {} // Abstract Builderclass PizzaBuilder{protected:  std::shared_ptr pizza;public:  PizzaBuilder() {}  virtual // ConcreteBuilderclass SpicyPizzaBuilder : public PizzaBuilder{public:  SpicyPizzaBuilder() : PizzaBuilder() {} Результаты использования паттерна Есть возможность изменять внутреннею структуру создаваемого продукта (или создать Лабораторная работа №1 (дедлайн - 26.02)Порядок выполнения работы: 1. С использованием одного
Слайды презентации

Слайд 2 ... Абстрактная фабрика

... Абстрактная фабрика

Слайд 10 Структура паттерна Builder

Структура паттерна Builder

Слайд 13 Отношения между участниками
Клиент конфигурирует распорядителя (Director) экземпляром конкретного

Отношения между участникамиКлиент конфигурирует распорядителя (Director) экземпляром конкретного строителя.Распорядитель вызывает методы

строителя.
Распорядитель вызывает методы строителя для конструирования частей продукта.
Конкретный

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



Слайд 16 Пример кода на С++

Пример кода на С++

Слайд 17 // Product
class Pizza
{
private:
std::string dough;
std::string

// Productclass Pizza{private: std::string dough; std::string sauce; std::string topping;public: Pizza() {

sauce;
std::string topping;

public:
Pizza() { }

~Pizza() { }
void SetDough(const std::string& d) { dough = d; }
void SetSauce(const std::string& s) { sauce = s; }
void SetTopping(const std::string& t) { topping = t; }
void ShowPizza()
{
std::cout << " Yummy !!!" << std::endl
<< "Pizza with Dough as " << dough
<< ", Sauce as " << sauce
<< " and Topping as " << topping
<< " !!! " << std::endl;
}
};


Слайд 18 // Director
class Waiter
{
private:
PizzaBuilder* pizzaBuilder;
public:
Waiter()

// Directorclass Waiter{private: PizzaBuilder* pizzaBuilder;public: Waiter() : pizzaBuilder(NULL) {} ~Waiter() {

: pizzaBuilder(NULL) {}
~Waiter() { }
  void

SetPizzaBuilder(PizzaBuilder* b) { pizzaBuilder = b; }
std::shared_ptr GetPizza() { return pizzaBuilder->GetPizza(); }
void ConstructPizza()
{
pizzaBuilder->createNewPizzaProduct();
pizzaBuilder->buildDough();
pizzaBuilder->buildSauce();
pizzaBuilder->buildTopping();
}
}; // Клиент заказывает две пиццы.


Слайд 19 // Abstract Builder
class PizzaBuilder
{
protected:
std::shared_ptr pizza;
public:

PizzaBuilder() {}
virtual ~PizzaBuilder() {}
std::shared_ptr GetPizza()

{ return pizza; }
  void createNewPizzaProduct() { pizza.reset (new Pizza); }
  virtual void buildDough()=0;
virtual void buildSauce()=0;
virtual void buildTopping()=0;
 }; ----> …

class HawaiianPizzaBuilder : public PizzaBuilder
{
public:
HawaiianPizzaBuilder() : PizzaBuilder() {}
~HawaiianPizzaBuilder(){}
  void buildDough() { pizza->SetDough("cross"); }
void buildSauce() { pizza->SetSauce("mild"); }
void buildTopping() { pizza->SetTopping("ham and pineapple"); }
};


Слайд 20 // 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"); }
};

Слайд 23 Результаты использования паттерна
Есть возможность изменять внутреннею структуру

Результаты использования паттерна Есть возможность изменять внутреннею структуру создаваемого продукта (или

создаваемого продукта (или создать новый продукт).
продукт конструируется через

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




  • Имя файла: pattern-builder-stroitel.pptx
  • Количество просмотров: 120
  • Количество скачиваний: 0