Должен ли класс User реализовывать IPrincipal и IIdentity
Я создаю свою собственную аутентификацию на основе токенов для asp.net web api 2, и у меня есть вопрос о user
учебный класс.
В настоящее время мой user
реализует класс IPrincipal
а также IIdentity
, но я не знаю, что такое лучшая практика. Вы бы поделили IPrincipal
а также IIdentity
и сделать IIdentity
Реализация член IPrincipal
?
В настоящее время я использую следующее объявление класса
class User : IPrincipal, IIdentity
Спасибо!
1 ответ
Вы бы поделили IPrincipal и IIdentity и сделали бы реализацию IIdentity членом IPrincipal?
Я не думаю, что это хороший подход, так как если Identity
был похож на IPrincipal
не должно быть никаких причин для разлуки.
Кроме того, на данный момент ваш класс реализует оба интерфейса. Это означает, что ваш класс реализует методы обоих интерфейсов. Если позже вы по какой-либо причине решите, что ваш класс не должен реализовывать тот или иной интерфейс, вам просто нужно удалить реализацию методов, которые привязаны к интерфейсу, который вы хотите удалить.
В дополнение к вышесказанному имейте в виду следующее:
Принцип сегрегации интерфейса (ISP) гласит, что ни один клиент не должен зависеть от методов, которые он не использует
Это один из пяти принципов SOLID, которые являются основными принципами объектно-ориентированного программирования и проектирования.