298
Моделирование каталога библиотеки
П
ришло
время
вернуть
оБъекты
модели
в
реальность
Итак, наш объект
Book
имеет несколько свойств. Но давайте будем честны
-
ми: большинство книг содержат гораздо больше метаданных, чем те, что мы
рассматривали до сих пор. Кроме того, если мы захотим изменить структуру
данных, нам придется выпустить новую версию приложения. При этом старая
и новая версии приложения должны сохранять совместимость друг с другом.
Дополнительные сложности возникнут, когда мы добавим возможность сохра
-
нения книг в закладках.
Как сказал бы доктор Фил (да, тот самый доктор Фил
1
): «Пришло время вер
-
нуть объекты модели в реальность».
К счастью, у нас есть два пути:
1) перейти от использования жестко определенной структуры данных
к чему-то более гибкому, например JSON;
2) перейти от использования статического источника данных к другому,
более динамическому источнику данных, например находящемуся на
удаленном сервере.
Как упоминалось выше в этой главе, вариант под номером 2 мы рассмотрим
в главе 20 данной книги, а здесь исследуем вариант 1: переход на JSON.
JSON
для
одного
, JSON
для
всего
Мы решили использовать JSON. Вот пример, как могли бы выглядеть наши объ
-
екты
Book
в формате JSON:
{
"title": "...",
"authors": ["..."],
"isbn": "...",
"pageCount": 0,
"fiction": true
}
Фактически, если взять данные из свойства
sampleData
, которое мы добавили
в наш объект
Book
, преобразовать их в формат JSON и сохранить в файл с име
-
нем
catalog.json
, мы получим следующий результат:
[
{
"title": "Fight Club",
"authors": ["Chuck Palahniuk"],
"isbn": "978-0393039764",
"pageCount": 208,
"fiction": true
},
{
"title": "2001: A Space Odyssey",
1
https://ru.wikipedia.org/wiki/Макгроу_Фил
. –
Прим. перев.
JSON для одного, JSON для всего
299
"authors": ["Arthur C. Clarke"],
"isbn": "978-0451457998",
"pageCount": 296,
"fiction": true
},
{
"title": "Ulysses",
"authors": ["James Joyce"],
"isbn": "978-1420953961",
"pageCount": 682,
"fiction": true
},
{
"title": "Catch-22",
"authors": ["Joseph Heller"],
"isbn": "978-1451626650",
"pageCount": 544,
"fiction": true
},
{
"title": "The Stand",
"authors": ["Stephen King"],
"isbn": "978-0307947307",
"pageCount": 1200,
"fiction": true
},
{
"title": "On The Road",
"authors": ["Jack Kerouac"],
"isbn": "978-0143105466",
"pageCount": 416,
"fiction": true
},
{
"title": "Heart of Darkness",
"authors": ["Joseph Conrad"],
"isbn": "978-1503275928",
"pageCount": 78,
"fiction": true
},
{
"title": "A Brief History of Time",
"authors": ["Stephen Hawking"],
"isbn": "978-0553380163",
"pageCount": 212,
"fiction": false
},
{
"title": "Dispatches",
"authors": ["Michael Herr"],
"isbn": "978-0679735250",
"pageCount": 272,
300
Моделирование каталога библиотеки
"fiction": false
},
{
"title": "Harry Potter and Prisoner of Azkaban",
"authors": ["J.K. Rowling"],
"isbn": "978-0439136365",
"pageCount": 448,
"fiction": true
},
{
"title": "Dragons Love Tacos",
"authors": ["Adam Rubin", "Daniel Salmieri"],
"isbn": "978-0803736801",
"pageCount": 40,
"fiction": true
}
]
Если хотите, можете добавить в этот файл другие книги: пришло время лич
-
ных фаворитов и тайных увлечений.
Do'stlaringiz bilan baham: |