Должен ли класс 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, которые являются основными принципами объектно-ориентированного программирования и проектирования.

Другие вопросы по тегам