Если вы беспокоитесь о том, что придется загружать все объекты Person
, то, возможно, не загружайте их до тех пор, пока вам действительно не понадобятся данные - например, с помощью подхода Lazy Load .
Если вам нужно было заполнить список «Люди», но вы не хотели возвращать ВСЕ их данные - только материал, необходимый для списка (скажем, ID, Имя и Фамилия), тогда делайте только это - возможно, используя Объект Person не правильный путь, потому что он слишком тяжелый?
То, что я склонен делать, это иметь в виду концепцию (как личность) и иметь два класса, которые представляют их:
- Легкий класс, разработанный для списков и т. Д., Как правило, только для чтения.
- «Полнофункциональный» объект для выполнения операций над «Лицом».
С архитектурной точки зрения нет ничего плохого в том, что вы делаете, но оно строго основано на ОО - его не касается последствий извлечения данных с точки зрения физических ограничений, которые могут быть наложены на вас средой, в которой фактически будет работать программное обеспечение.
В основном подход, который вы используете, великолепен, но основан на подходе «на класс», а не на основе множеств.