Skip to content

reybos/job4j_tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

О проекте

Build Status    codecov

Предназначен для закрепления знаний, полученных при изучении блока посвященного ООП из курса по основам языка Java.

Этот проект - консольное приложение. После запуска пользователю отображается меню с возможностями программы. Программа просит ввести в консоль пункт меню для дальнейшего действия. Например, пользователь ввел цифру 0. Система просит пользователя ввести имя заявки. После этого действия система сохраняет в памяти заявку и снова отображает пункты меню. Если пользователь выбрал пункт 6 - это будет выход из программы, т.е. программа закрывается.

Структура проекта

Интересные моменты

  • Удалили зависимость StartUI от внешних ресурсов (Scanner)
  • Удалили зависимость классов от внешних ресурсов (System.out)
  • Реализовали StartUI за счет шаблона стратегия. Этот шаблон позволяет изменить алгоритм работы программы в запущенной программе
  • Шаблон декоратор для валидатора. Смысл Декоратора - добавление нового поведения в уже существующее поведение
  • Шаблон фабричный метод. Смысл этого шаблона в создании метода, который создает новый экземпляр объекта. Шаблон абстрактная фабрика. Главное отличие от фабричного метода, абстратная фабрика это интерфейс, который содержит абстратные методы для создания экземплятов.

Singleton

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

  • Ленивая загрузка (Lazy loading) происходит, когда мы явно обращаемся к объекту. Происходит его загрузка.
  • Энергичная загрузка (Eager loading) - загружает объект сразу после старта виртуальной машины.

Варианты реализации

  1. enum. Eager loading.
  2. static field. Lazy loading.
  3. static final field. Eager loading.
  4. private static final class. Lazy loading.

Releases

No releases published

Packages

No packages published

Languages