Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Triangle Shapes Project

📚 Описание

Проект по предмету "Шаблоны проектирования в Java". Реализует работу с треугольниками:

  • вычисление площади и периметра
  • определение типа треугольника
  • хранение в репозитории и на складе
  • чтение входных данных из файла
  • валидация, логгирование, покрытие тестами

🎯 Цель

Создать приложение с соблюдением принципов SOLID и применением шаблонов: Factory Method, State, Observer, Singleton, Specification, Repository, Object Pool.

🧩 Используемые паттерны

  • Factory Method — для создания треугольников через TriangleFactory
  • State — определение типа треугольника (isRight, isIsosceles, isEquilateral)
  • ObserverTriangleObserverImpl следит за изменениями точек
  • SingletonWarehouse, TriangleRepository
  • Repository — хранение всех фигур
  • Specification — фильтрация объектов
  • Object PoolWarehouse как пул параметров фигур

🏗 Архитектура

  • entity — классы Point, Triangle
  • dtoTriangleDTO для парсинга данных
  • parserTriangleParser парсит строку из файла
  • factoryTriangleFactory создаёт фигуру
  • initTriangleInitializer добавляет в репозиторий и склад
  • repository, warehouse — хранилища объектов и параметров
  • service, validator, specification, comparator
  • reader, observer

⚙️ Как запустить

  1. Открыть проект в IntelliJ IDEA (или другой IDE)
  2. Убедиться, что установлен JDK 17+
  3. Запустить:
mvn clean test

🧪 Тестовое покрытие

  • TestNG
  • Без if, for, switch — только assert'ы
  • Покрыты:
    • Сервис (расчёты)
    • Валидаторы
    • Репозиторий
    • Спецификации
    • Компараторы
    • Обновление склада
    • Чтение файла

📁 Пример входного файла

0.0;0.0;3.0;0.0;0.0;4.0
1.0;1.0;2.0;2.0
a;b;c;d;e;f

🛠 SOLID и Java Best Practices

  • ✅ Разделение ответственности (SRP)
  • ✅ Расширяемость через интерфейсы (OCP)
  • ✅ Маленькие интерфейсы (ISP)
  • ✅ Использование Optional, логгеров, своих Exception
  • ✅ Пакетная структура и ручные equals/hashCode
  • ✅ Code Convention и TestNG правила соблюдены

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages