Например:
Скажем , у меня есть классы A
, B
, C
. У меня есть два интерфейса, давайте называть их IAnimal
и IDog
. IDog
наследует от IAnimal
. A
и B
есть IDog
, а C
нет, но это IAnimal
.
Важной частью является то, что не IDog
предоставляет никаких дополнительных функций. Он используется только для разрешения A
и B
, но не C
для передачи в качестве аргумента определенным методам.
Это плохая практика?
MyProject.Data.IAnimal
и MyProject.Data.Animal
лучше чем MyProject.Data.Interfaces.Animal
и MyProject.Data.Implementations.Animal
Interface
или Implementation
, или в повторяющемся префиксе, или в пространстве имен, это тавтология в любом случае и нарушает DRY. Dog
это все, что вам нужно заботиться PitBull extends Dog
тоже не нужна избыточность реализации, слово extends
говорит мне все, что мне нужно знать, прочитайте ссылку, которую я разместил в своем исходном комментарии.
IAnimal
иIDog
являются страшными именами тавтологии!