33 lines
1.6 KiB
C++
33 lines
1.6 KiB
C++
/*
|
||
* quiz_json_adapter.h — Конкретный адаптер (Adapter) паттерна «Адаптер»
|
||
*
|
||
* QuizJsonAdapter — это «переводчик» между двумя несовместимыми
|
||
* интерфейсами:
|
||
*
|
||
* Adaptee (что есть): QJsonObject / QJsonArray — формат Qt-библиотеки
|
||
* Target (что нужно): IQuizAdapter — интерфейс нашего приложения
|
||
*
|
||
* Именно здесь выполняется десериализация: каждое поле QJsonObject
|
||
* извлекается по строковому ключу и записывается в соответствующее
|
||
* поле C++-объекта Quiz.
|
||
*
|
||
* Зависимость на уровне заголовков: QuizJsonAdapter наследует
|
||
* IQuizAdapter, значит нужен только этот include — всё остальное
|
||
* (QJsonObject, QJsonArray, Quiz) уже включено транзитивно.
|
||
*/
|
||
|
||
#pragma once
|
||
|
||
#include "iquiz_adapter.h"
|
||
|
||
class QuizJsonAdapter : public IQuizAdapter
|
||
{
|
||
public:
|
||
/*
|
||
* override явно указывает компилятору, что метод переопределяет
|
||
* виртуальный метод базового класса. Если сигнатура вдруг не совпадёт —
|
||
* получим ошибку компиляции, а не молчаливый баг.
|
||
*/
|
||
Quiz toQuiz (const QJsonObject &json) const override;
|
||
QList<Quiz> toQuizList(const QJsonArray &json) const override;
|
||
};
|