Предстоит рефакторинг приложения в связи с переходом на нет кор, а именно серверной части для мобильных приложений.
И встал вопрос об организации кода программы. Нужно как от упростить добавление нового фунционала в код. Напишу сразу как есть и как предполагаю сделать. Может кто, что посоветует.
Как есть: есть один основной класс в котором создаются экземпляры остальных классов (классы работы с базой данных, классы работающие с подключениями, классы отвечающие за рассылку оповещений на мыло и PUSH). Они выполняют минимум только то, что их касается, а вот основная бизнес-логика располагается в в основном классе и к этому моменту она очень сильно разрослась.
К примеру, класс "сервер" получил от сокета данные, десериализовал их и пробросил их в основной класс, там прошла обработка согласно бизнеслогике, и вызвался метод другого класса (репозитория данных), что бы добавить запись в базу. После удачного добавления данных в базу - вызывается соответствующие событие. На это событие подписан только основной класс. В основном классе от этого события может зависеть куча других действий.
Как хочу/предполагаю сделать: есть основной класс в котором создаются все остальные классы (работа с сокетами, работа с базой, отправка оповещений). А код каждой отдельной логики действий и обработки на события раскидать по отдельным классам. Они будут наследоваться один базовый абстрактный класс, с помощью которого смогут получить доступ к классам созданным в основном классе, вызывать их методы и подписываться на события.
Вот ищу на сколько это правильное решение и есть ли какие либо паттерны для этого?