Skip to content

AlexaJavaDev/PatternsPractice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏗️ Мой первый учебный проект на Java

Этот проект я создала, чтобы разобраться с паттернами проектирования на практике.
Здесь показано, как разные классы могут взаимодействовать через интерфейсы.


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

Файл Паттерн/Роль Описание
CarMain.java Main + Builder Основной класс с паттерном Builder, геттерами, toString и точкой входа main для демонстрации всех паттернов
CarService.java Интерфейс Интерфейс для работы с автомобилем (метод drive). Используется в Proxy, Decorator, Adapter
CarHandler.java Интерфейс (Chain of Responsibility) Интерфейс для цепочки обязанностей (метод handle и setNext)
SortStrategy.java Интерфейс (Strategy) Интерфейс для стратегий сортировки (метод sort)
CarDecorator.java Интерфейс-маркер (Decorator) Интерфейс-маркер для декораторов (расширяет CarService)
SortByModel.java Стратегия Стратегия сортировки списка автомобилей по модели (алфавитный порядок)
SortByPower.java Стратегия Стратегия сортировки по мощности (по возрастанию)
SortByYear.java Стратегия Стратегия сортировки по году выпуска (по возрастанию)
ModelCheck.java Обработчик (Chain of Responsibility) Проверяет, что модель не пустая и не null
YearCheck.java Обработчик (Chain of Responsibility) Проверяет, что год выпуска в диапазоне 1900–2026
PowerCheck.java Обработчик (Chain of Responsibility) Проверяет, что мощность больше 0
RealCar.java Реализация (Proxy) Реализация CarService — реальный объект, который «едет»
CarProxy.java Прокси Проверяет мощность (доступ разрешён только при >100 л.с.)
CarDecorBase.java Базовый декоратор Абстрактный базовый класс для декораторов, хранит ссылку на декорируемый объект
SoundDecor.java Декоратор Добавляет звук двигателя («Врум-врум»)
GpsDecor.java Декоратор Добавляет GPS-навигацию («Маршрут построен»)
OldCar.java Адаптируемый класс Старый класс с методом startEngine (используется для демонстрации Adapter)
CarAdapter.java Адаптер Приводит OldCar к интерфейсу CarService

Паттерны, использованные в проекте

Паттерн Файлы Описание
Builder CarMain.java Построение сложного объекта автомобиля
Proxy CarProxy.java, RealCar.java Контроль доступа к объекту
Decorator CarDecorator.java, CarDecorBase.java, SoundDecor.java, GpsDecor.java Динамическое добавление функциональности
Chain of Responsibility CarHandler.java, ModelCheck.java, YearCheck.java, PowerCheck.java Цепочка проверок автомобиля
Strategy SortStrategy.java, SortByModel.java, SortByPower.java, SortByYear.java Разные алгоритмы сортировки
Adapter CarAdapter.java, OldCar.java Адаптация старого класса под новый интерфейс

Что я изучала в этом проекте

  • Интерфейсы — контракт, который должны реализовать классы
  • Паттерны проектирования — готовые решения для типовых задач
  • Взаимодействие классов — как они работают вместе через интерфейсы

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

  1. Скачай все файлы в одну папку
  2. Открой терминал в этой папке
  3. Выполни:
    javac Main.java
    java Main
    

Мои заметки

  • CarService.java — центральный интерфейс, вокруг которого построены все паттерны
  • RealCar.java — базовая реализация, Proxy и Decorator оборачивают её
  • Chain of Responsibility — проверяет данные автомобиля перед использованием
  • Strategy — позволяет гибко менять алгоритм сортировки

⭐ Мой первый учебный проект с паттернами. Дальше — больше!

About

Мой первый учебный проект на Java. Здесь я разбираю паттерны проектирования.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages