Страницы

Поиск по вопросам

пятница, 17 мая 2019 г.

Бизнес-логика и ее реализация


Вначале про бизнес-логику. Есть идея программы, часть функций уже реализована, структура (как на картинке) уже создана. Встал вопрос насколько такая структура и идея логики программы вообще применимы, какие в них есть недостатки. Основные действия программы помещаются в Main и влезают примерно в 10-50 строчек, которые, по сути, являются приказами для других отделов (инициализация). Получается, что к Class 2 и Class 3 образуются и взаимодействуют только в Class 1, а остальные (например Class10, Class25) даже и не предполагают что такие существуют вовсе, они обращаются только к Class1. Class 1 и Class 10 extend Thread и после инициализации ожидают, когда их вызовут.
Теперь два главных вопроса:
1. Это вообще возможно? Это первая крупная задача, которая встала передо мной, и я столкнулся с некоторыми сложностями, которые у меня остались, наверно, из-за нехватки знаний. А именно: допустим, я создал объект класса Class1 (это в Main). Теперь я хочу обратиться к нему из класса Class25, чтобы получить ответ на вопрос, который решают Class2 и Class3. Как это сделать? Важно - я не хочу создавать директора отдела (Class1) в каждом из подклассов, я хочу чтобы он был один, и в будущем был потоком, если это возможно.
2. И если это все-таки возможно, то насколько это правильно, почему я не видел такой логики в других программах? Связь GETTER-SETTER сводится к минимуму, а ООП развивается по максимуму.


Ответ

Очень хорошие и глобальные вопросы подняты, но вопросов несколько и ответы могут быть очень большими. Отвечу кратко, просто чтобы направить автора вопроса в нужном направлении для развития.
Надо знать, что существуют разные паттерны программирования, то есть на Java можно писать по разному, в разном стиле. И одну и ту же задачу можно решить разными способами и библиотеками.
В целом, на Java активно используется Spring. Знание Spring с избытком ответит на оба вопроса - как один из вариантов решения. Если решать эти вопросы без Spring, то ответы могут быть другими.
По вопросам в целом
Если объект экземпляра Class1 должен быть один (читать про паттерн singleton), то объект создается один раз и используется в других объектах по ссылке. А как он будет сделан - это уже решать автору. Вариантов много: сделать static class Class1 или сделать Spring @Bean Class1 или руками создать объект Class1 и передавать в конструкторы других классов по ссылке или через геттеры-сеттеры.
П.С. Также полезно разобраться с понятием POJO

Комментариев нет:

Отправить комментарий