Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

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

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Основные типы шаблонов проектирования. Типы связей, которые могут применяться при объектно-ориентированном программировании. Обзор и реализация порождающих, структурных и поведенческих шаблонов проектирования. Шаблоны "Command", "Front Controller".
Краткое сожержание материала:

Размещено на

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

«Исследование паттернов проектирования в 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 абстрак...

Другие файлы:

Паттерны проектирования. Repository & Decorator
Исследование приемов объектно-ориентированного проектирования. Описания паттернов поведения, предназначенных для распределения обязанностей между объе...

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

Поддержка принятия решений на основе паттернов проектирования

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

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