Помочь в создании архитектуры по всем правилам SOLID

Дмитрий9 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
15.12.2020

Помогите правильно сделать архитектуру используя SOLID

Софт на Qt

Вводные данные: есть тот кто передает и принимает данные (socket)

Но мы упростим

struct Net {

bool sendData (const QByteArray &data);

signals:

void receviedData (const QByteArray &data);

}

Первый уровень это протокол сервиса.

enum class CommandId : quint8 {

Command1,

Command2

}

struct ServicePacket {

CommandId id;

QByteArray data;

}

id это номер команды, data любые данные которые нужный для этой команды

Теперь сами команды

struct Command1 {

quint64 time;

QString cmdData;

}

struct Command2 {

QString status;

}

ServicePacket  Может иметь формат бинарный, и может иметь формат Json

В случае с бинаркой

struct ServicePacket {

CommandId id;

QByteArray data;

}

Для Json

struct ServicePacket {

CommandId id;

QJsonValue data;

}

3 попытка реализации лежит в аттаче

Мне кажется я что-то сильно путаю и каждый раз прихожу в тупик, то не могу перекодировать принятые пакеты, то закодировать.

Мне нужны подробные объяснения что я не так делаю. с рабочим примером типа как в аттаче, но там ошибки потому что я не дописал, первые 3 версии были также ужасны.