Страницы

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

воскресенье, 1 марта 2020 г.

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

#java #многопоточность #ооп




Вначале про бизнес-логику. Есть идея программы, часть функций уже реализована, структура
(как на картинке) уже создана. Встал вопрос насколько такая структура и идея логики
программы вообще применимы, какие в них есть недостатки. Основные действия программы
помещаются в 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 сводится к минимуму, а ООП развивается
по максимуму.
    


Ответы

Ответ 1



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

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

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