Предположим, у нас есть 3 объекта: библиотека, раздел и книга.
A Library
состоит из нескольких Sections
. A Section
имеет несколько Books
.
A Book
может принадлежать только 1 Section
. И, наконец, Section
может принадлежать только 1 Library
.
На мой взгляд, класс Library
агрегирует набор Sections
, а класс Section
агрегирует набор Books
.
Теперь мне нужно загрузить все книги на сервер. Я строю класс BookUploader
, который принимает объект Book в своем конструкторе. На сервере я создал папку для каждой библиотеки, а внутри каждой библиотеки я создам папку Раздела и поместу в нее Книгу.
Проблема в том, что, поскольку я передал объект Book в BookUploader, я понятия не имею, что это за раздел. Кроме того, я не знаю, какой раздел принадлежит какой библиотеке.
Поэтому я подумал, что я просто передам объект Library в BookUploader, затем зациклю весь раздел, затем зациклю все книги в каждом разделе, но кто-то сказал мне, что теперь BookUploader зависит от 3 классов для загрузки Book, что является плохим дизайном.
Он предположил, что каждый объект Книги должен содержать свой раздел, а каждый раздел должен содержать свою библиотеку, что полностью противоположно моему первоначальному дизайну.
Кто-нибудь может поделиться своими мыслями о том, какой дизайн лучше и почему?
Заранее спасибо.