У меня есть три класса: пользователь, поставщик и клиент. Теперь Клиент является «пользователем» и имеет те же атрибуты, что и пользователь, поэтому он должен наследовать класс пользователя. Но путаница в случае с Продавцом. Поставщик «не-а» Пользователь в соответствии с бизнес-правилами, поскольку поставщик не должен использовать приложение, но он также имеет те же атрибуты, которые пользователь имеет. Должен ли поставщик наследоваться от класса User в данном конкретном случае или нет?Наследие отношений путаницы
ответ
Логично, я бы сказал, нет. Если бы я разрабатывал такую систему, я бы предположил, что объект User имеет такие методы, как Login, ChangePassword, GetLastLoginDate и т. Д. С другой стороны, у Поставщика могут быть такие методы, как AddProduct, ReceivePurchaseOrder и т. Д.
Просто потому, что он имеет такие атрибуты, как имя и фамилия, а другие такие переменные не делают его пользователем. Объект больше, чем просто свойства, он также включает действия (методы). Я бы предположил, что методы, которые будут частью класса User, будут сильно отличаться от поставщиков, основанных на том, что я знаю как пользователей приложения, так и поставщиков. Если продавцы были типом пользователей, которые вошли в ваше приложение, но имели другой доступ, чем клиенты, тогда я бы сказал «да». Однако, основываясь на вашем описании, они очень разные вещи.
Есть два способа подойти к этому:
1) У обоих пользователей и поставщиков наследуют от одного родительского объекта, может быть счет. Учетная запись содержит атрибуты, общие для пользователя и поставщика, и позволит вам позже добавлять специальные атрибуты для пользователей, которых не получают поставщики.
2) Если атрибуты Поставщика всегда будут соответствовать атрибутам пользователя, вы можете добавить атрибут «Войти в систему» для пользователя и наследовать от него. Это будет менее сложно в краткосрочной перспективе, но может привести к проблемам позже, если пользователь и поставщик расходятся.
- 1. C# Наследие доступа путаницы
- 2. Наследие путаницы с участием дженериков и самонаследования
- 3. Синглтонское наследие
- 4. has_many и наследие схема
- 5. Password Validation - Наследие Код
- 6. Наследие стиля Firemonkey?
- 7. Является ли наследие CORBA?
- 8. Наследие с автоматической инкрементацией
- 9. Наследие и смешение состава?
- 10. Наследие выбранных функций
- 11. Обернуть наследие AsyncTask наблюдаемым Rxjava?
- 12. Hibernate Пространственный и наследие дб
- 13. Наследие id в спящем режиме
- 14. java code компиляция наследие extends
- 15. Decyphering некоторое загадочное наследие JavaScript
- 16. Наследие RMI от весеннего приложения
- 17. EzPublish наследие - Fetching мета-теги
- 18. Для путаницы путаницы, почему это не цикл?
- 19. Полиморфные отношения путаницы
- 20. Незнание путаницы
- 21. Поплавки путаницы
- 22. Смешивание путаницы
- 23. Переменные путаницы
- 24. Координация путаницы
- 25. foldr путаницы
- 26. Синтаксис путаницы
- 27. LVM_GETITEM путаницы
- 28. hibernate resultset и отображение путаницы
- 29. Git branch содержит - наследие и консистенция
- 30. Наследие, динамическое связывание, конструктор в суперклассе. Java
Если у Продавца есть * каждый атрибут *, который Пользователь делает, он не использует приложение, тогда есть что-то о пользователе, которое вы еще не захватили. –
Я предлагаю читать образцы дизайна. Шаблоны проектирования не будут отвечать на ваш вопрос напрямую, но помогут вам понять общие проблемы (как организовать свои классы) связанные проблемы/решения в oop. – Spidey