Реферат
Введение
Глава 1. Обзор шаблонов проектирования и их классификация
1.1 Основные шаблоны проектирования
1.1.1 Delegation (Делигирование)
1.1.2 Interface (Интерфейс)
1.1.3 Abstract Superclass (Абстрактный суперкласс)
1.2 Порождающие шаблоны проектирования
1.2.1 Factory Method (Метод фабрики)
1.2.2 Builder (Строитель)
1.2.3 Singleton (Одиночка)
1.3 Разделяющие шаблоны проектирования
1.3.1 Filter (Фильтр)
1.3.2 Composite (Компоновщик)
1.4 Структурные шаблоны проектирования
1.4.1 Adapter (Адаптер)
1.4.2 Facade (Фасад)
1.4.3 Dynamic Linkage (Динамическая компоновка)
1.5 Поведенческие шаблоны проектирования
1.5.1. Chain of Responsibility (Цепочка ответственности)
1.5.2 Mediator (Посредник)
1.5.3 Snapshot (Моментальный снимок)
Глава 2. Разработка структуры проекта
2.1 Класс Main
2.2 Класс TicketStore
2.3 Класс Ticket
2.4 Класс Person
2.5 Класс StringConvert
Глава 3. Реализация приложения
3.1 Класс Main
3.2 Класс TicketStore
3.3 Класс Ticket
3.4 Класс Person
3.5 Класс StringConvert
3.6 Демонстрация работы
Заключение
Список используемой литературы
Введение
Шаблоны проектирования - это многократно используемые решения широко распространенных проблем, возникающих при разработке программного обеспечения (ПО). По мере приобретения опыта программисты признают сходство новых проблем и решаемыми ими ранее. С накоплением большего опыта приходит осознание того, что решения похожих проблем представляют собой практически неизменяемые шаблоны. Зная эти шаблоны, опытные программисты распознают ситуацию их применения и сразу используют готовое решение, не тратя время на предварительный анализ проблемы. В большинстве случаев путь от несформулированного интуитивного представления хорошо продуманной идеи, которую программист может четко выразить словами, на удивление труден. Это очень важный этап, потому что если программист настолько хорошо понимает шаблон проектирования, что может писать его словами, то он в состоянии разумно комбинировать его с другими шаблонами. Еще важнее то, что однажды сформулированный шаблон может использоваться и другими программистами, знакомыми с этим шаблоном. Это позволяет программистам эффективнее сотрудничать и объединять свои интеллектуальные возможности. Кроме того, это помогает избежать таких ситуаций, когда программисты, обсуждая различные решения проблемы, только через некоторое время обнаруживают, что они имели в виду одно и то же решение, но выраженное разными способами. Следовательно, появляется необходимость в некой конкретизации и шаблонизации некоторых методов программирования и данная работа как раз об этом.
Глава 1. Обзор шаблонов проектирования и их классификация.
Из вышесказанного описания можно сделать вывод, что шаблонов проектирования слишком много, отвечают они за разные вещи, а значит разбить их на классы достаточно трудно. На самом же деле это не совсем так. Все шаблоны проектирования можно разделить на: фундаментальные, порождающие, разделяющие, структурные, поведенческие.
Цель данной главы - рассмотреть различия между этими классами, описать основные достоинства и недостатки тех или иных шаблонов, а так-же вывести общую характеристику достоинств и недостатков тех или иных классов шаблонов проектирования.
1.1 Основные шаблоны проектирования
Шаблоны, данной главе - самые фундаментальные и являются действительно
основой. Они активно используются другими шаблонами.
Шаблоны: delegation, interface, abstract superclass и interface and Abstract Class показывают, как организовать отношения между классами. Большинство шаблонов следующих разделов используют хотя-бы один из этих шаблонов в своей основе.
Шаблон Immutable описывает, как избежать ошибок и задержек во время доступа многочисленных объектов к одному и тому же объекту.
Глава 2. Разработка структуры проекта
Разобравшись с основными шаблонами проектирования, пришло время разобрать и мой проект.
Цель моего проекта - разработать систему регистрации пассажиров на авиарейсы. Регистрация проходит по предъявлению билета и проверки личности пассажира. Таким образом, в разрабатываемом приложении должны находиться некие классы-объекты билет и человек. Также необходимо иметь возможность управлять программой. Управление будет проводиться в классе Main. В целях упрощения реализации управление будет осуществляться из командной строки.
Важной особенностью программного обеспечения подобного рода является то, что нам необходимо где-то хранить оформленные билеты и, как минимум, иметь возможность их где-либо сохранить и загрузить. В этих целях будет использоваться класс TicketStore.
Так-же, во избежание дублирующего кода, создадим класс StringConvert, который будет переводить введенные с клавиатуры, данные о дате и времени отправления самолета, а так-же дате рождения пассажира.
Давайте рассмотрим эти классы подробнее.
Глава 3. Реализация приложения
В процессе создания приложения упор делался на максимальную безопасность приложения при использовании исключительно стандартного функционала java, без каких-либо дополнительных библиотек или фреймворков.
Получившиеся исходные коды выглядят следующим образом:
Заключение
В процессе работы над проектом мы рассмотрели основную часть самых распространненных шаблонов проектирования, разделили их по классам, выявили их достоинства и недостатки. С использованием полученных данных разработали собственную систему регистрации людей на авиарейсы и полностью протестировали его работоспособность.
Скриншоты программы



1. Приемы объектно-ориентированного проектирования - Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.
2. Объектно-ориентированное мышление - Вайсфельд М.
3. Паттерны проектирования - Сьерра К., Бейтс Б.
4. Java EE. Паттерны проектирования для профессионалов - Йенер М., Фидом А.
5. Элементарные шаблоны проектирования - Мак-Колм С.
6. Шаблоны корпоративных приложений - Фаулер М.
7. Шаблоны проектирования в JAVA. - Гранд М.
8. Применение шаблонов проектирования - Ларман К.
9. Совершенный код - Макконнелл С.
10. Применение UML и шаблонов проектирования - Крэг Л.
11. Java. Методы программирования - Романчик В., Блинов И.
12. Программист-прагматик. Путь от подмастерья к мастеру. - Хант Э., Томас Д.
13. Паттерны проектирования - Могелашвили Г.
14. Паттеры проектирования - Тепляков С.
15. Паттерны проектирования - Фрименов О.