Введение
1 Назначение шаблонов проектирования
1.1 Порождающие шаблоны проектирования
1.1.1 Builder (Строитель)
1.1.2 Prototype (Прототип)
1.1.3 Singleton(Одиночка)
1.2 Структурные шаблоны проектирования
1.2.1 Adapter (Адаптер)
1.2.2 Заместитель (Proxy)
1.2.3 Decorator (Декоратор)
1.3 Поведенческие шаблоны проектирования
1.3.1 Chain of Responsibility (Цепочка ответственности)
1.3.2 Mediator (Посредник)
1.3.3 Visitor (Посетитель)
2 Практические исследования
2.1 Постановка задачи
2.2 Описание сущностей
2.3 Реализация шаблонов проектирования
2.4 Тестирование приложения
Заключение
Список источников
Введение
Шаблоны проектирования - это готовые к использованию решения часто возникающих в программировании задач. Это не класс и не библиотека, которую можно подключить к проекту, это нечто большее. Шаблон проектирования, подходящий под задачу, реализуется в каждом конкретном случае. Следует, помнить, что такой шаблон, будучи примененным неправильно или к неподходящей задаче, может принести немало проблем. Тем не менее, правильно примененный шаблон поможет решить задачу легко и просто [1].
Шаблоны проектирования помогают при общении программистов в тех случаях, когда программисты, обсуждая различные решения проблемы, только через некоторое время обнаруживают, что они имели в виду одно и то же решение, но выраженное разными способами.
Целью данной работы является описание наиболее простых и часто используемых шаблонов проектирования, а также выполнение технического задания с использованием некоторых из них.
1 Назначение шаблонов проектирования
Шаблоны проектирования различаются степенью детализации и уровнем абстракции и должны быть каким-то образом организованы.
Шаблоны проектирования могут быть классифицированы по цели. выделяют порождающие шаблоны, структурные шаблоны и шаблоны поведения. Первые связаны с процессом создания объектов. Вторые имеют отношение к композиции объектов и классов. Шаблоны поведения характеризуют то, как классы или объекты взаимодействуют между собой.
Так же можно классифицировать шаблоны по уровню, то есть по тому, к чему обычно применяется шаблон: к объектам или классам. Шаблоны уровня классов описывают отношения между классами и их подклассами. Такие отношения выражаются с помощью наследования, поэтому они статичны, то есть зафиксированы на этапе компиляции. Шаблоны уровня объектов описывают отношения между объектами, которые могут изменяться во время выполнения и потому более динамичны. Почти все шаблоны в какой-то мере используют наследование. Поэтому к категории «шаблоны классов» отнесены только те, что сфокусированы лишь на отношениях между классами. Большинство шаблонов действуют на уровне объектов.
Порождающие шаблоны проектирования абстрагируют процесс инстанцирования. Они помогут сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы варьировать инстанцируемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту [2].
Для порождающих шаблонов актуальны две темы. Во-первых, эти паттерны инкапсулируют знания о конкретных классах, которые применяются в системе. Во-вторых, скрывают детали того, как эти классы создаются и стыкуются. Единственная информация об объектах, известная системе, - это их интерфейсы, определенные с помощью абстрактных классов. Следовательно, порождающие шаблоны обеспечивают большую гибкость при решении вопроса о том, что создается, кто это создает, как и когда. Можно собрать систему из «готовых» объектов с самой различной структурой и функциональностью статически (на этапе компиляции) или динамически (во время выполнения) [3].
2 Практические исследования
2.1 Постановка задачи
Цель данного курсового проекта – создать демонстрационное java приложение по теме «Разработка системы учета доходов и расходов семьи» в котором используются шаблоны проектирования.
Приложение будет использоваться для записи членами семьи данных о своих доходах или расходах, указывая их количество, важность и дату действия. Проводить операции с существующими данными пользователь может только в том случае, если он является администратором приложения или сам эти данные создал.
Разработанное приложение реализует следующий функционал:
- Просмотр записи денежной операции;
- Добавление записи денежной операции;
- Редактирование записи денежной операции;
- Удаление записи денежной операции;
- Просмотр членов семьи;
- Добавление членов семьи;
- Редактирование членов семьи;
- Удаление членов семьи;
- Вход в приложение
Заключение
В результате выполнения курсовой работы было разработано приложение, предназначенное для ведения учета доходов и расходов семьи. Разработка приложения осуществлялась в среде программирования Eclipse на языке Java на платформе Java EE с использованием фреймворка Spring Framework.
Одним из главных назначений разработанного приложения является осуществление быстрого и удобного доступа к необходимой информации, что позволит пользователю эффективно использовать свое время. Для реализации этого назначения в приложении предусмотрена такая функциональность, как добавление, редактирование и удаление данных используемых таблиц, а также занесение данных с учетом вошедшего в систему пользователя.
1. Шаблоны проектирования для новичков [Электронный ресурс]. – Режим доступа: https://tproger.ru/translations/design-patterns-for-beginners/.
2. Шаблоны проектирования простым языком. Часть первая. Порождающие шаблоны [Электронный ресурс]. – Режим доступа: https://tproger.ru/translations/design-patterns-simple-words-1/.
3. Лекция 7: Порождающие шаблоны проектирования [Электронный ресурс]. – Режим доступа: https://intuit.ru/studies/courses/3611/853/lecture/32057.
4. Лекция 5: Структурные шаблоны проектирования [Электронный ресурс]. – Режим доступа: https://intuit.ru/studies/courses/3611/853/lecture/32053.
5. Паттерны проектирования, используемые в Spring Framework [Электронный ресурс]. – Режим доступа: https://habr.com/ru/company/otus/blog/451516/.
6. Руководство по Spring. Введение в Bean-ы. [Электронный ресурс]. – Режим доступа: https://proselyte.net/tutorials/spring-tutorial-full-version/introduction-into-beans/.
7. Цикл в Thymeleaf [Электронный ресурс]. – Режим доступа: https://betacode.net/12359/thymeleaf-loops.
8. Spring-Framework [Электронный ресурс]. – Режим доступа: https://habr.com/ru/post/490586/.
9. Maven [Электронный ресурс]. – Режим доступа: https://habr.com/ru/post/77382/.