У меня часто бывают те же проблемы, когда мне приходится создавать свой класс для веб-приложения. Требования: - поддерживаемый (например, без копирования-вставки) - слои полностью разделены (бизнес-уровень не должен знать, какой метод используется для уровня данных) - высокая производительность: не загружать бесполезные данные ,Основной вопрос о ООП
Во-первых у меня есть таблица со всеми своими клиентами и их адреса: Код:
Customer
--Id
--Name
--Address
----City
----ZC
----Street
Теперь я хочу таблицу (в другой странице) со всеми своими клиентами и книги, которые они купили, у меня есть несколько возможностей:
1/создать новый класс:
Код:
CustomerWithBooks
--Id
--Name
--Books[]
----ID
----name
PRO: Я загружаю только полезные данные CONS: Я создаю свой класс после моего пользовательского интерфейса, и есть копия.
2/Я добавляю Книги [] в первый класс. PRO: Все находится в одном классе, его можно обслуживать CONS: Я загружаю адрес впустую. Если я не загружаю адрес, я могу: ленивая загрузка, но мне это действительно не нравится, или когда я использую свой класс, я должен знать, какой метод моего DAL я назвал, и мне это не нравится.
3/Я использую наследование: Код:
ClientBase
--ID
--Name
ClientWithBooks : ClientBase
--Books[]
ClientWithAdress : ClientBase
--Address
PRO: действительно maintenable, и я не загружать данные ничего не СВОД: Что делать, если в одном интерфейсе я хочу показать книги и адрес?
4/?? Я надеюсь, что есть идеальное решение
Звучит неплохо. Если я хорошо понимаю, вы говорите, что я должен избегать композиции, если нет иерархии, вместо этого я должен сделать некоторый «класс отношений». –