Лучшие практики при использовании интерфейса - PullRequest
2 голосов
/ 21 апреля 2011

Много раз при разработке интерфейсов я продолжаю сталкиваться с одной и той же ситуацией.Ситуация такова, что некоторые реализации, использующие интерфейс, требуют определенных параметров в интерфейсе, а другие - нет.

  • Какова наилучшая практика при разработке интерфейса?
  • Можно ли иметь определенные реализации, которые реализуют интерфейс, но не используют все параметры?

Или в этих ситуациях я должен просто брать список (некоторую структуру) параметров и соответственно обрабатывать этот список в каждой реализации?

Ответы [ 2 ]

9 голосов
/ 21 апреля 2011

Нет, все не в порядке. Это нарушает принцип замещения Лискова.

Мне кажется, что ваши интерфейсы пытаются сделать слишком много. Или используйте наследование интерфейса или разделите интерфейс на несколько. Обратите внимание, что лучше иметь много маленьких интерфейсов, чем один большой. Классы могут все еще реализовать все это.

Интерфейсы, как и классы, должны следовать SRP (принципу единой ответственности). imho гораздо важнее, чтобы интерфейсы делали это, так как они навязывают дизайн остальной части вашего приложения.

Я также стараюсь максимально избегать добавления свойств из интерфейсов.

0 голосов
/ 21 апреля 2011

В некоторых случаях все нормально. Неважно, что вы на самом деле делаете с параметрами в реализации, если это удовлетворяет контракту, который интерфейс обещает поддерживать.

Но вы должны пересмотреть, не хотите ли вы на самом деле более специфический интерфейс для некоторых вещей, которым нужны эти параметры. В вашем стеке абстракций наличие «более низкого» интерфейса, требующего «более высоких» параметров, является нарушением инкапсуляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...