Исследование паттернов проектирования в PHP

Основные типы шаблонов проектирования. Типы связей, которые могут применяться при объектно-ориентированном программировании. Обзор и реализация порождающих, структурных и поведенческих шаблонов проектирования. Шаблоны "Command", "Front Controller".

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 01.06.2014
Размер файла 3,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru

Тема курсового проекта

«Исследование паттернов проектирования в PHP»

Оглавление

Введение

1. Основные типы шаблонов проектирования

1.1 Обзор связей

2. Обзор и реализация шаблонов проектирования

2.1 Обзор и реализация порождающих шаблонов проектирования

2.2 Обзор и реализация структурных шаблонов проектирования

2.3 Обзор и реализация поведенческий шаблон проектирования

Заключение

Список литературы

Приложения

Введение

Шаблоны проектирования - архитектурная конструкция, которая определяет общие решения распространенных задач. Решение возникшей задачи проанализировано и объяснено. Шаблоны проектирования снижают сложность разработки т.к. разработчик использует готовые абстракций разделенные на отдельные модули элементов. Каждый шаблон имеет уникальное название, это позволяет при разработке ссылаться на известные шаблоны.

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

1. Основные типы шаблонов проектирования

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

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

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

Архитектурные шаблоны - охватывают собой архитектуру всей программной системы.

Шаблоны баз данных - помогаю извлекать данные из баз данных.

Шаблоны параллельного программирования - применяются для написания многопоточных программ.

Анти-паттерны - описывают характерные ошибки при проектировании, в дизайне и в реализации.

1.1 Обзор связей

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

Агрегация.

Способ ассоциации объектов друг с другом. Применяется

когда один класс, должен, содержать другие классы и иметь к ним доступ. Существование содержащихся классов не зависит от времени существования содержащего класса (см. Приложение 1).

Достоинство: независимость. Изменение класса “Book” не повлияет на класс “Product”.

Композиция.

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

Недостаток: система, состоящая, из зависимых классов труднее сопровождается. Изменение класса Book влечет изменение класса Product

(см. Приложение 2).

Направленные ассоциации.

Способ ассоциации, когда метод одного класса обращается к методу другого класса по средствам создания экземпляра класса.

Достоинство: Нет необходимости хранить ссылку на объект класса “Valid”

(см. Приложение 3).

2. Обзор и реализация шаблонов проектирования

2.1 Обзор и реализация порождающих шаблонов проектирования

Singleton - Одиночка.

“Singleton” - порождающий шаблон проектирования, может иметь только один экземпляр класса с глобальной точкой доступа, решает проблему глобальных переменных.

Проблема использования глобальных переменных:

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

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

Применение.

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

Реализация.

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

Ссылку на экземпляр класса можно получить с помощью метода уровень объявленного доступа, у которого public. Чаще всего данный метод называется getInstance и объявляется статическим, как и свойство в котором хранится ссылка на созданный объект. Объявление свойств и методов класса статическими, позволяет обращаться к ним, не создавая экземпляра класса, например: ClassName::getInstance().

Пример Реализации.

С помощью представленных методов можно создать копию родительского объекта или получить ссылку на данный объект, если уровень доступа у методов не объявить защищенным или закрытым:

__construct

__clone

_wakeup

Поэтому уровень доступа для данных методов объявлен private.

Метод getInstance возвращает ссылку на единственный экземпляр класса, если объект типа текущего класса не найден в свойстве $_instance, создает объект и присваивает ссылку на него в статическое свойство $_instance, которое объявлено с уровнем доступа private.

Методы setProperty, getProperty предназначены для работы со свойствами объекта Singleton.

Метод getProperty возвращает значение из защищенного свойства $_props, которое является массивом, где $key ключ ячейки массива.

Метод setProperty присваивает в защищенное свойство $_props, которое является массивом, значение, где параметр $key - ключ ячейки массива $_props, $value значение, которое необходимо сохранить в данную ячейку массива.

Пример реализации (см. Приложение 4).

Достоинство.

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

Недостаток.

Глобальные объекты могут создаваться зависимости в системе.

Factory Method - Фабричный метод.

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

Применение.

Данный шаблон проектирования применяется когда:

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

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

Реализация.

Определяются суперклассы для классов-компонентов и для создания объектов-компонентов.

Компоненты - это классы, в которых реализована специфическая реализация.

Создатель - это фабрики, в котором определен метод для генерации объекта.

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

Пример реализации.

Класс Mail - абстрактный суперкласс, определяет интерфейс для дочерних объектов.

Классы TxtMail, HtmlMail дочерни классы класса Mail. Реализуют абстрактный метод encodeMail, который определяет специфическую реализацию.

Класс Format, абстрактный суперкласс, определяет интерфейс для дочерних объектов. Объявляет фабричный метод getEncoder.

Класс TxtFormat, HtmlFormat конкретный класс-создатель. Метод getEncoder создает и возвращает объект типа Mail (см. Приложение 5).

Достоинство.

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

Недостаток.

Способствует созданию ненужного класса наследника Format для каждого наследника класса “Mail” (см. Приложение 5).

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

Abstract factory - порождающий шаблон проектирования, позволяющий изменять поведение системы, генерирует связанный набор классов, которые, созданные одной фабрикой, реализуют общие методы.

Применение.

Применяется когда необходимо создать группы однотипных объектов.

Реализация.

Определяется интерфейс для генерации каждого из необходимых классов.

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

PHP не ограничивает тип данных, возвращаемый из метода. Данная возможность предоставляет большую гибкость, по сравнению со строго-типизированными языками, это позволяет использовать данный шаблон проектирования вместо шаблона проектирования Factory Method, где необходимо указывать тип возвращаемый методом.

Пример Реализации.

Класс Mail абстрактный суперкласс, определяет интерфейс для дочерних объектов.

Класс TxtMail, HtmlMail наследники класс Mail, реализуют абстрактный метод класса Format.

Интерфейс Format, определяет методы для дочерних объектов. Все методы, определенные в интерфейсе - публичны.

Класс MailFormat реализует инферфейс Format. Методы getTxtMail, getHtmlMail возвращают объект типа Mail. (см. Приложение 6).

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

Достоинство.

Программа независима от процесса создания новых объектов.

Изолированность классов.

Однотипные классы.

Недостаток.

Усложняется добавление поддержки новых классов.

Prototype - Прототип.

Prototype - порождающий шаблон проектирования. Создает объект, клонируя другой объект для дублирования уже существующих объектов вместо создания объектов с использованием конструктора. Клонирование позволяет создать копию объекта, к которому оно применяется.

Применение.

Данный шаблон проектирования применяется, когда необходимо:

Избежать построения параллельных иерархий классов.

Создать объект не задействую метод __construct, который вызывается автоматически, при создании объекта, используя директиву new.

Реализация.

Этапы проектирования:

Определяются допустимые классы для создания объектов прототипов.

Определяется поведения фабрики прототипов.

Создание объекта фабрики с заданными параметрами прототипа.

Создание объектов содержащихся в объекте-прототипе путём клонирования.

Пример реализации.

Определяются суперклассы Mail, Image.

Определяется класс PrototypeMessage (прототип) и определяются допустимые типы объектов, передаваемые для метода __construct который присваивает ссылки на объекты свойствам объекта.

Метод getMail, возвращается ссылку на объект типа Mail, ссылка на объект хранится в свойстве $_mail.

Метод getImage, возвращается ссылку на объект типа Image, ссылка на объект хранится в свойстве $_image.

Переменная prototypeMessage1 содержит ссылку на объект типа PrototypeMessage.

Переменная mail1 содержит ссылку на объект типа Mail, полученную при обращении к методу getMail объекта типа PrototypeMessage.

Для внесения изменений достаточно изменить набор классов (см. Приложение 7).

Достоинство.

Сокращает количество классов, которые можно создать.

Группирует объекты.

Помогает избежать использовать метода __construct, при создании объекты.

2.2 Обзор и реализация структурных шаблонов проектирования

Composite - Компоновщик.

Composite - структурный шаблон проектирования, который объединяет в себе объекты, подобные ему самому, в древовидную структуру. Иерархия наследования представляет деревья, корнем которых является суперкласс, ветви - подклассы. Шаблон предназначен для обхода данной древовидной структуры.

Применение.

Данный шаблон предназначен для объединения объектов в древовидную структуру и обращению ко всем компонентам одинаково.

Реализация.

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

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

Класс-композитор - составной класс, определяет поведение компонентов.

Для получения информации необходимо последовательно перебирать все узлы содержащие объекты.

Пример реализации.

Определяется абстрактный суперкласс Tag, который определяет основные методы, которые будут поддерживать дочерние классы.

Определяются классы листья (компонуемые классы): BestTag, NewTag.

Определяется класс-композитор: CompositeTag, который сохраняет в защищенное свойство массива $_tags, ссылки на объекты типа Tag с помощью метода addTag, который принимает в качестве аргумента ссылку на объект типа Tag.

Для получения информации необходимо последовательно перебирать все узлы экземпляра класса CompositeTag, который наследует абстрактный класс Tag, и содержит объекты типа Tag, которые хранятся в свойстве объекта в виде массива.

Метод getTitle объекта CompositeTag перебирает сохраненные в свойстве объекты и обращается к методу getTitle. (см. Приложение 8).

Достоинство.

Позволяет обращаться к отдельным объектам и группе объектов одинаково.

Архитектура позволяет выполнить обход всех узлов.

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

Недостаток.

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

Decorator - Декоратор.

Decorator - структурный шаблон проектирования, предназначенный для расширения функциональности другого класса, без использования наследования.

Применение.

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

Реализация.

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

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

Пример реализации.

Класс myOperation - абстрактный суперкласс, который все дочерние классы расширяют, в дочерних классах реализован метод operation, т.к. он объявлен абстрактным. Класс DecorateOperation объявлен абстрактным т.к. в нем не реализован абстрактный метод operation.

Методы классов вызываются в любой последовательности -- до или после вызова последующего метода объекта.

Цепочка объектов должна заканчиваться экземпляром класса ConcreteOperation т.к. у данного класса нет обязательного аргумента для конструктора, в отличие от дочерних классов типа DecorateOperation. В классах DecorateOperation хранится ссылка на объект типа myOperation, в каждом классе хранится ссылка на объект его собственно типа, кроме объекта ConcreteOperation.

Выполняется операция и вызывается аналогичная операция у объекта, на который есть ссылка (см. Приложение 9).

Достоинство.

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

Недостаток.

В более старых версиях php нет контроля типа, это может привести к ухудшению безопасности, т.к. не известен тип объекта.

Facade - Фасад.

Facade - структурный шаблон проектирования, позволяющий скрыть сложные и менее важные компоненты системы, оставив только основные методы.

Применение.

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

Реализация.

Создается одна точка для входа для подсистемы выполняющая взаимодействие с её компонентами. Скрываются сложные и менее важные компоненты системы.

Пример реализации.

Класс Data содержит метод _randomData, который объявлен защищенным, его нельзя вызывать извне класса, только посредством ссылки. Метод getRandomData - точка доступа, возвращает значение из массива $_data, вызывает метод _randomData. Клиентскому коду не нужно знать о подробностях реализации (см. Приложение 10).

Достоинтсво:

Позволяет скрыть подробности реализации.

Adapter - Адаптер (Обёртка).

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

Применение.

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

Реализация.

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

Достоинство.

Способствует повторному использованию кода.

2.3 Поведенческие шаблоны проектирования

Strategy - Стратегия.

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

Применение.

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

Реализация.

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

Пример Реализации.

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

HtmlStrategy, TxtStrategy дочерние классы класса FileStrategy, реализуют метод getFileName т.к. он объявлен абстрактным, это позволяет классу Content ничего не знать о классах типа FileStrategy при вызове данного метода.

Объект класса Content содержит ссылку на объект типа FileStrategy и использует его метод getFileName, который возвращает массив содержащий данные.

Достоинство.

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

Расширяемость. Нет необходимости изменять классы при добавлении других классов.

Observer - Наблюдатель.

Observer - поведенческий шаблон проектирования. Позволяет получать оповещения от других классов об изменении их состояния. Отделяет клиентские элементы (наблюдателей) от основного класса (субъекта).

Примение.

Данный шаблон проектирования применяется когда:

Существует объект, рассылающий сообщения.

Существует получатель сообщений.

Компоненты должны быть как можно более независимыми.

Отправителя сообщений не интересует, что делают получатели с предоставленной информацией.

Реализация.

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

Пример реализации.

Класс Newspaper управляет объектами наблюдателей. Действия, производимые с объектами наблюдателями:

Объекты могут быть добавлены в массив $_observers класса Newspaper с помощью метода attach, который принимает в качестве аргумента ссылку на объект типа Observer.

Объекты могут быть удалены из массива $_observers с помощью метода detach, который принимает в качестве аргумента ссылку на удаляемый объект и содержит имя, которое указывает название удаляемого объекта.

Объекты могут быть оповещены об измнениях с помощью метода notify, который обращается к методу update каждого объекта.

Пример реализации: См. приложение 12.

Достоинство.

Позволяет создать гибкую связь, сохраняя независимость между объектами.

Visitor - Посетитель.

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

Позволяет описать алгоритм для каждого типа объектов.

Применение.

Применяется когда необходимо для ряда классов произвести похожую операцию, не изменяя основного класса.

Реализация.

В базовом суперклассе объекта-компонента описывается метод accept, который позволяет делать следующее:

Вызывать метод объекта-посетителя для текущего объекта-компонента т.к. php позволяет динамически определить метод, который необходимо вызвать для объекта типа Visitor.

Передавать “объект-посетитель” всем текущим дочерним методам объекта.

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

Определяются производные классы типа Visitor для каждой операции, исполняемой над элементами.

При внесении изменений в класс Visitor нет необходимости изменять обслуживаемые классы.

Пример реализации.

Определяется базовый суперкласс Element (объект-компонент).

Класс Element содержит метод accept, которому передается в качестве аргумента объект типа Visitor (объект-посетитель).

Динамически определяет имя метода на основе имени текущего класса и вызывает данный метод для предоставленного объекта типа Visitor.

Определение имени необходимого для вызова метода объекта типа Visitor происходит следующим образом:

К имени текущего объекта, типа Element, добавляется строка visitor, например, имя текущего класс SessionElement, метод для объекта типа Visitor будет следующим: visitorSessionElement.

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

Объект типа CompositeElement содержит в свойстве массив со значениями являющимися ссылками на объекты типа Element, для структурирования и облегчения получения информации (позволяет вызвать каждый компонент дерева).

Класс Visitor содержит методы, которые вызываются в метод accept класса типа Element. Вызванному методу объекта типа Visitor передается ссылка на текущий вызвавший объект.

Класс InfoVisitor наследует класс Visitor, в свойстве $_information содержится строка с полученной информацией с помощью метода visitor, который вызывается по умолчанию в методах объекта типа Visitor.

Создается экземпляр класса CompositeElement. С помощью метода AddElement присваиваются ссылки на объекты типа Element массиву $_elements.

Клиент создает объект типа Visitor и передает его в вызываемый метод accept() объекта типа CompositeElement.

Метод getInfo объекта типа Visitor возвращает строку с полученной информацией (см. приложение 13).

Достоинство.

Позволяет перебирать иерархическую древовидную структуру.

Позволяет избавиться от нехарактерных для класса методов (в отличье от шаблона “Композитор”).

Позволяет добавить новые операции, не изменяя основного класса.

Недостаток.

Усложняет добавление новых классов, поскольку нужно обновлять иерархию.

Command - Команда.

Command - поведенческий шаблон проектирования. Представляет действие, объект команды заключает в себе само действие и его параметры.

Командные объекты поддерживают разделение между уровнями контроллера, который обеспечивает связь между пользователем и системой (обработка запросов и передачей управления какому-либо объекту) и моделью (содержит логику приложения).

Применение.

Данный шаблон предназначен для обработки команд в виде объекта.

Реализация.

Абстрактный класс для командного объекта содержит метод execute.

В шаблоне Command может быть 3 участника:

Клиент, который создает экземпляр командного объекта.

Вызывающий участник, который использует данный объект.

Получатель.

Получатель может быть передан командному объекту в качестве аргумента для метода __construct, или запрошен по средствам объекта-фабрики.

В шаблоне “Command” предусмотрен объект содержащий массив глобальных переменных. Объект после выполнения операций содержит ответ.

Controller не имеет представления о внутреннем содержании команды.

Предусмотрен класс для создания определенного командного объекта, из возможных классов. Осуществляется вызов определенного метода командного объекта, для этого используется параметры запроса. Объекты классов, которые возможно создать, расположены в отдельных директориях.

Если файл найден и существует класс, создается экземпляр (объект) данного класса.

Данная система работает при создании одной точки доступа.

Достоинство.

Позволяет создавать структуры, в которой класс-отправитель и класс-получатель не зависят друг от друга напрямую.

Позволяет создать гибкие и легко расширяемые системы т.к. нет необходимости вносить изменение в классы Command или Controller.

Front Controller - Единая точка входа.

Front Controller - поведенческий шаблон проектирования. Предоставляет единую точку доступа для обработки всех входящих запросов и для вывода результатов пользователю.

Применение.

Применяется для предоставления навигацию по связанным страницам.

Реализация.

Шаблон Front Controller объединяет всю обработку запроса. Обрабатывает

запрос и использует его, чтоб определить операцию для выполнения.

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

Класс (типа Command) выбирается в соответствии структуры URL. Адрес запроса сопоставляется с файлами, директории содержащими классы типа Command. Если такой файл содержащий класс найден, он обрабатывается, в противном случае обрабатывается класс по умолчанию.

После выполнения операций, полученные данные передаются представлению.

Достоинство.

Помогает избавиться от дублирования.

Расширяемость. Данная структура позволяет добавлять классы Command и представления с минимальным воздействием на другие компоненты при внесении изменений.

Способствует повторному использованию.

Недостаток.

Издержки при инициализации. Вся информация загружается во время выполнения.

Заключение.

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

С помощью шаблонов проектирования описываются лучшие методики решения задач.

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

Список литературы

шаблон паттерн программирование

1. PHP. Объекты, шаблоны и методики программирования. Зандстра. 2011г.

2. Приёмы объектно-ориентированного проектирования. Паттерны проектирования. Гамма, Хелм, Джонсон, Влиссидс. 1994г.

3. Учебный мануал курса «Специалист php».

Сайты:

1. Wikipedia: wikipedia.org.

2. PHP: Hypertext Preprocessor: php.net.

Приложение 1.

Исходный код реализации агрегации предоставлен на рисунке 1.

Рисунок 1. Исходный программный код на php5.

Приложение 2

Исходный код реализации композиции предоставлен на рисунке 2.

Рисунок 2. Исходный программный код на php5.

Приложение 3

Исходный код реализации направленной ассоциации предоставлен на рисунке 3.

Рисунок 3. Исходный программный код на php5.

Приложение 4

Исходный код реализации шаблона проектирования Singleton предоставлен на рисунке 4.

Рисунок 4. Исходный программный код на php5.

Приложение 5

Исходный код реализации шаблона проектирования Factory Method предоставлен на рисунке 5.

Рисунок 5. Исходный программный код на php5.

Приложение 6

Исходный код реализации шаблона проектирования Abstract factory предоставлен на рисунке 6.

Рисунок 6. Исходный программный код на php5.

Приложение 7

Исходный код реализации шаблона проектирования Prototype предоставлен на рисунке 7.

Рисунок 7. Исходный программный код на php5.

Приложение 8

Исходный код реализации шаблона проектирования Composite предоставлен на рисунке 8.

Рисунок 8. Исходный программный код на php5.

Приложение 9

Исходный код реализации шаблона проектирования Decorator предоставлен на рисунке 9.

Рисунок 9. Исходный программный код на php5.

Приложение 10

Исходный код реализации шаблона проектирования Facade предоставлен на рисунке 10.

Рисунок 10. Исходный программный код на php5.

Приложение 11

Исходный код реализации шаблона проектирования Strategy предоставлен на рисунке 11.

Рисунок 11. Исходный программный код на php5.

Приложение 12

Исходный код реализации шаблона проектирования Observer предоставлен на рисунке 12.

Рисунок 12. Исходный программный код на php5.

Приложение 13

Исходный код реализации шаблона проектирования Visitor предоставлен на рисунке 13.

Рисунок 13. Исходный программный код на php5.

Размещено на Allbest.ru


Подобные документы

  • Ознакомление с описанием, выделение преимуществ и недостатков применения таких шаблонов проектирования: абстрактной фабрики, строителя, фабричного метода, прототипа, адаптера, компоновщика, декоратора, цепочки обязанностей, команды, итератора, состояния.

    краткое изложение [485,9 K], добавлен 29.03.2010

  • Исследование приемов объектно-ориентированного проектирования. Описания паттернов поведения, предназначенных для распределения обязанностей между объектами в системе. Признаки применения, использования паттерна "Декоратор". Принцип действия репозитория.

    реферат [686,9 K], добавлен 21.09.2013

  • Обзор процесса проектирования. Характерные черты удачных проектов. Понятие и типы домена. Способ обработки событий. Архитектурные классы Form, Imitator, AE. Статическая модель прикладного домена. Исходные тексты операций обработки событий и их описание.

    курсовая работа [375,4 K], добавлен 26.01.2011

  • Построение концептуальной (инфологической) модели базы данных. Выбор языка и среды программирования, требования к клиентскому приложению. Выбор шаблонов проектирования, UML диаграмма классов с учетом выбранных шаблонов. Тестирование слайдера "Slick".

    дипломная работа [2,5 M], добавлен 10.07.2017

  • Выбор и обоснование аппаратного обеспечения. Типы архитектуры веб-приложений. Шаблоны проектирования архитектуры приложения. Разработка инфологической модели базы данных. Подготовка к разработке приложения. Рассмотрение причин возникновения паттернов.

    дипломная работа [3,0 M], добавлен 27.11.2022

  • История развития рынка CAD/CAM/CAE-систем. Развитие приложений для проектирования шаблонов печатных плат и слоев микросхем. Проект разработки компанией Shorts Brothers фюзеляжа для самолета бизнес-класса Learjet 45, преимущества от применения программ.

    контрольная работа [19,4 K], добавлен 14.04.2014

  • Виды и структура художественного проектирования. Феномен и специфика графического дизайна. Закономерности и принципы формообразования объектов художественного проектирования. Основные средства композиции. Этапы процесса художественного проектирования.

    курсовая работа [8,1 M], добавлен 13.03.2014

  • Теоретические аспекты проектирования баз данных. Определение предметной области информационной системы, этапы ее проектирования. Особенности инфологического и даталогического видов проектирования. Реализация проекта в среде SQL Server Enterprise Manager.

    курсовая работа [511,8 K], добавлен 11.03.2014

  • Ландшафт, ландшафтные объекты и способы их описания. Основные этапы проектирования. Особенности проектирования ландшафтных объектов. Обоснование необходимости автоматизации процесса проектирования ландшафтных объектов. Разработка АРМ.

    дипломная работа [2,9 M], добавлен 06.12.2006

  • Виртуальные функции, статические и абстрактные классы, шаблоны: элементы и члены класса, их роль в объектно-ориентированном программировании; механизм осуществления виртуального вызова при выполнении программы; обработка исключительных ситуаций в C++.

    реферат [27,2 K], добавлен 06.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.