Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »Информатика

Шаблоны проектирования

Тип: изложение
Категория: Информатика
Скачать
Купить
Шаблоны проектированияAbstract factory (Абстрактная фабрика)Abstract factory (Абстрактная фабрика) — шаблон проектирования, позволяющий изменять поведение системы, варьируя создаваемые объекты, при этом сохраняя интерфейсы. Он позволяет создавать целые группы взаимосвязанных объектов, которые, будучи созданными одной фабрикой, реализуют общее поведение. Шаблон реализуется созданием абстрактного класса Factory, который представляет собой интерфейс для создания компонентов системы (например, для оконного интерфейса, он может создавать окна и кнопки). Затем пишутся наследующиеся от него классы, реализующие этот интерфейс.ЦельПредоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классовПлюсыизолирует конкретные классы;упрощает замену семейств продуктов;гарантирует сочетаемость продуктов.Минусысложно добавить поддержку нового вида продуктов.ПрименимостьСистема не должна зависеть от того, как создаются, компонуются и представляются входящие в нее объекты; Входящие в семейство взаимосвязанные объекты должны использоваться вместе и вам необходимо обеспечить выполнение этого ограничения; Система должна конфигурироваться одним из семейств составляющих ее объектов; требуется предоставить библиотеку объектов, раскрывая только их интерфейсы, но не реализацию.Пример C++#include // AbstractProductAclass ICar{public:virtual void info() = 0;};// ConcreteProductA1class Ford : public ICar{public:virtual void info(){std::cout << "Ford" << std::endl;}};//ConcreteProductA2class : public ICar{public:virtual void info(){std::cout << "" << std::endl;}};// AbstractProductBclass IEngine{public:virtual void getPower() = 0;};// ConcreteProductB1class FordEngine : public IEngine{public:virtual void getPower(){std::cout << "Ford Engine 4.4" << std::endl;}};//ConcreteProductB2class ToyotaEngine : public IEngine{public:virtual void getPower(){std::cout << "Toyota Engine 3.2" << std::endl;}};// AbstractFactoryclass CarFactory{public:ICar* getNewCar(){return createCar();}IEngine* getNewEngine(){return createEngine();}protected:virtual ICar*createCar()= 0;virtual IEngine*createEngine()= 0;}
Другие файлы:

Применение шаблонов проектирования. Дополнительные штрихи
Книга одного из "Банды четырёх" - авторов знаменитой "Design Patterns".Данная книга предназначена для разработчиков программного обеспечения, использу...

Исследование паттернов проектирования в PHP
Основные типы шаблонов проектирования. Типы связей, которые могут применяться при объектно-ориентированном программировании. Обзор и реализация порожд...

Элементарные шаблоны проектирования
В книге описана базовая коллекция простых шаблонов проектирования, которые, в свою очередь, раскладываются на составляющие их элементы. С этими элемен...

Шаблоны проектирования в JAVA
Подробно рассмотрено применение в Java шаблонов проектирования (patterns), которые представляют собой многократно используемые решения широко распрост...

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