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

Курсовая работа

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

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

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

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

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

  • Одиночка.

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

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

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

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

Применение.

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

Реализация.

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

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

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

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

__construct

__clone

_wakeup

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

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

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

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

6 стр., 2733 слов

Разработка обучающей программы по классам в C

... доступом к курсу, внесение изменений в него и пр. 1.4 Основные требования к обучающим программам 1. Технические требования [4]: возможности получения твердой копии надёжность работы ... классах и осуществления контроля знаний обучаемых [3]. Создание дистанционного курса предполагает разработку трех составляющих [3]: собственно обучающего ... (содержит ссылки не только ... параметров объектов анимации, ...

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

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

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

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

Недостаток.

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

Применение.

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

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

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

Реализация.

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

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

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

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

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

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

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

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

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

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

Недостаток.

Способствует созданию ненужного класса наследника Format для каждого наследника класса “Mail” (см. Приложение 5).factory — Абстрактная фабрика.factory — порождающий шаблон проектирования, позволяющий изменять поведение системы, генерирует связанный набор классов, которые, созданные одной фабрикой, реализуют общие методы.

Применение.

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

Реализация.

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

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

70 стр., 34581 слов

Дипломный проект — Методы повышения точности GPS измерений

... В 1984 г. Бенджамин Ремонди изложил теоретические основы GPS измерений. Им же была разработана технология кинематических измерений. Первый вид измерений стал называться непрерывной кинематикой, а второй кинематикой «стой ... Macrometr V-1000 до­казали состоятельность GPS технологий. Группой ученых Массачусетского института технологий была создана сеть сгущения 1-го класса из 30 станций в районе Эйфель ...

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

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

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

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

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

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

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

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

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

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

Недостаток.

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

Применение.

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

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

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

Реализация.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Применение.

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

Реализация.

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

11 стр., 5306 слов

Работа с природным материалом на х технологии в начальных классах

... уроках технологии в начальной школе». Объектом исследования являются уроки технологии в современной начальной школе по теме «Работа с природным материалом на уроках технологии в начальных классах». Цель: выявить, какова роль уроков технологии по теме «Работа с природным материалом на уроках технологии в начальных классах»; в ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Применение.

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

Реализация.

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

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

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

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

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

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

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

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

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

18 стр., 8903 слов

Концентраты пищевые. Методы определения влаги

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

Недостаток.

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

Применение.

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

Реализация.

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

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

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

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

Позволяет скрыть подробности реализации.- Адаптер (Обёртка).

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

Применение.

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

Реализация.

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

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

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

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

  • Стратегия.

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

Применение.

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

Реализация.

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

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

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

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

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

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

8 стр., 3642 слов

Проектирование и реализация компьютерной сети для малого предприятия

... локальной сети и обеспечение скоростного доступа в глобальную сеть. Объектом исследования является проектирование компьютерной сети. ... создания и эксплуатацию локальной сети. Вывод: Реализация предложенного проекта позволит сократить ... типа «Звезда» Рисунок 1.2 — Схема соединения «Звезда» Преимущества ЛВС топологии «Звезда» заключается в том, что можно подключать к сети новые узлы, не прерывая работу ...

Примение.

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

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

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

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

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

Реализация.

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

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

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

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

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

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

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

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

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

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

Применение.

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

Реализация.

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

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

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

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

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

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

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

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

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

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

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

5 стр., 2202 слов

Проектирование сборочно-сварочного участка

... работы является проектирование сборочно-сварочного участка. В ходе проектирования одновременно решаются технологические, экономические и организационные задачи. Планировка сборочно-сварочного участка ... кондукторы. 2. Исходные данные для проектирования оснастки Исходными данными для проектирования оснастки ... к курсовому проекту заклепочный сварной соединение сборка 3. Проектирование приспособлений ...

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

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

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

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

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

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

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

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

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

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

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

Недостаток.

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

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

Применение.

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

Реализация.

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

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

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

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

Получатель.

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

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

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

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

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

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

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

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

18 стр., 8881 слов

Проектирование и разработка информационно-поисковой системы

... реализации поисковой системы. Для проектирования и разработки информационно-поисковой системы используются следующие инструменты: 1. Intellij idea - IDE для разработки приложений ... заявки на мониторинг Оплата за предоставленные услуги (мониторинг) 8. Расширение ... wav. Так как у исходных данных нет строгой структуры, ... В данной работе я рассмотрю 2 варианта разработки такой системы. С использованием ...

Применение.

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

Реализация.

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

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

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

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

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

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

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

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

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

Недостаток.

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

Заключение.

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

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

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

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

[Электронный ресурс]//URL: https://inzhpro.ru/kursovaya/most-pattern/

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

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

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

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

Сайты:

— Wikipedia: wikipedia.org.

2. PHP: Hypertext Preprocessor: php.net.

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

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

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

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

Приложение 2

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

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

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

Приложение 3

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

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

Приложение 4

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

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

25 стр., 12274 слов

Создание мобильного приложения для организации

... основным рекомендациям по разработке приложений для данной платформы (Android User Interface Guidelines). Все сторонние библиотеки, используемые в приложении должны иметь открытый исходный код и ... информацией с ними является актуальной задачей. Целью данной дипломной работы является создание мобильного приложения для организации информационного обмена между мобильными сотрудниками компании ООО ...

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

Приложение 5

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

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

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

Приложение 6

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

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

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

Приложение 7

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

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

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

Приложение 8

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

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

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

Приложение 9

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

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

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

Приложение 10

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

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

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

Приложение 11

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

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

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

Приложение 12

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

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

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

Приложение 13

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

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

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