Студопедия — Структура. Product - продукт
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Структура. Product - продукт






 

  • Product - продукт

- определяет интерфейс объектов, создаваемых абстрактным методом;

  • ConcreteProduct - конкретный продукт

- реализует интерфейс Product;

  • Creator - создатель

- объявляет фабричный метод, который возвращает объект типа Product. Может также содержать реализацию этого метода "по умолчанию";

- может вызывать фабричный метод для создания объекта типа Product;

  • ConcreteCreator - конкретный создатель

- переопределяет фабричный метод таким образом, чтобы он создавал и возвращал объект класса ConcreteProduct.

Достоинства

  • позволяет сделать код создания объектов более универсальным, не привязываясь к конкретным классам (ConcreteProduct), а оперируя лишь общим интерфейсом (Product);
  • позволяет установить связь между параллельными иерархиями классов.

Недостатки

  • необходимость создавать наследника Creator для каждого нового типа продукта (ConcreteProduct).

Пример

 

#include<iostream>

#include<string>

using namespace std;

 

// Product

class Product

{ public:

virtual string getName() = 0;

virtual ~Product(){};

 

// ConcreteProductA

class ConcreteProductA: public Product

{ public:

string getName()

{ return "ConcreteProductA"; }

};

 

// ConcreteProductB

class ConcreteProductB: public Product

{ public:

string getName()

{ return "ConcreteProductB"; }

};

 

// Creator

class Creator

{ public:

virtual Product* FactoryMethod() = 0;

virtual ~ Creator (){};

};

 

// ConcreteCreatorA

class ConcreteCreatorA: public Creator

{ public:

Product* FactoryMethod()

{ return new ConcreteProductA(); }

};

 

// ConcreteCreatorB

class ConcreteCreatorB: public Creator

{ public:

Product* FactoryMethod()

{ return new ConcreteProductB(); }

};

 

int main()

{ const int size = 2;

// Создание массива конкретных creators

Creator* creators[size];

creators[0] = new ConcreteCreatorA();

creators[1] = new ConcreteCreatorB();

 

// Для каждого из creators создание своего product

for(int i=0; i<size; i++)

{ Product* product = creators[i]->FactoryMethod();

cout<<product->getName()<<endl;

delete product;

}

 

for(int i=0; i<size; i++) delete creators[i];

return 0;

}

 

 







Дата добавления: 2015-09-15; просмотров: 331. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

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

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

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия