MVC — это не Spring Web

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Наверно, я как многие начинающие Java программисты узнал об MVC при знакомстве c фреймворком Spring, в частности, с Spring Web MVC. При изучении я делал умный вид и кивал в знак понимания данного паттерна в рамках фреймворка. Но ведь так и было, паттерн прост в объяснении, но что касается того что бы осознать его отдельно от Spring'a и даже использовать на практике, это в моей голове тогда не укрепилось.

И сегодня я хочу поделиться небольшим опытом применения данного паттерна на практике, точнее, результатом до и после его применения.

Если вы еще не знаете об MVC или немного подзабыли, советую для начала познакомится или освежить знания, так как смысл данной маленькой статьи зависит от этого. Советую статью на Habr - Шпаргалка по MV-паттернам для проектирования веб-приложений

Главной задачей моей библиотеки была - генерирование Excel документов по заданному шаблону.
В общем, опишу тот слой абстракций, который мне казался верным на тот момент, стоит отметить, что тогда я еще не вспоминал об MVC, но наитие было:

  • DocData Хранит бизнес данные для вставки в шаблон (Properties для вставки по тегам и коллекции для создания таблиц)

  • Builder Должен отвечать за создание самого документа, на основе шаблона и переданного DocData класса

    • ExcelBuiler - Реализация для создания excel документов

  • DataMaker Данный слой многозадачный...

    • DataAnnotationMaker - Реализация для получения данных из бизнес логики посредством обычного POJO класса с незамысловатыми аннотациями.

    • Так же, каюсь, всякая данная реализация должна была быть связующим звеном между DocData и Builder

Я опустил другие не мало важные части моей маленькой библиотеки, так как они не имеют значения для данной статьи (или я просто не хочу еще за них отвечать...)

В общем, что изменилось когда я вспомнил об MVC паттерне?
На самом деле, мало и одновременно много, но с начала я покажу что у меня получилось после применения данного подхода:

  • ModelData Да, я просто переименовал DocData

  • View бывший Builder

    • ExcelView

  • Model сюда перешла главная и большая часть DataAnnotationMaker

    • AnnotationModel

  • Controller связующая часть между Model и View

Я сказал что мало чего изменилось, так как на самом деле я поправил небольшую часть кода, при помощи среды разработки это занимает не много времени, так же тесты показывали что все исправно работает так как и до этого, но почему, я так же считаю что изменилось многое - ведь теперь, любому программисту, которому придется взаимодействовать с моей библиотекой будет легко понять архитектуру библиотеки и легко работать с нею. Я думаю, это и есть один из главных преимуществ использования паттернов и тех или иных спецификаций...

Всем спасибо, это моя первая статья, буду рад любой конструктивной критике.

Источник: https://habr.com/ru/articles/782850/


Интересные статьи

Интересные статьи

Spring и Hibernate — два популярных инструмента для Java, которые используются в разработке приложений. В этой статье мы исследуем их основные функции и особенности, как они работают вместе и почему т...
В этом сезоне Heisenbug пройдёт хитрее обычного, совместив онлайн и офлайн. На рубеже весны–лета мы проведём онлайн-часть конференции. А когда станет еще теплее — можно будет встретиться в Питере и за...
Рецепт легкого перекуса для «Telegram - монстра Франкенштейна»Всем привет, это вторая часть создания телеграмм-бота (ссылка на первую часть), в ней мы реализуем Kafka Consumer, который будет ловить л...
В предыдущей статье мы рассмотрели как работает KafkaConsumer и как реализован механизм auto-commit. В этой статье я хочу остановиться на том как получает и обрабатываются сообщения spring-kafka....
Apache Camel — это фреймворк для интеграции приложений и эффективного взаимодействия между различными системами, с чем приходится часто сталкиваться в любой корпорат...