Методология интерфейсов Java: должен ли каждый класс реализовывать интерфейс? - PullRequest
19 голосов
/ 17 апреля 2010

Я программировал на Java для нескольких курсов в университете, и у меня есть следующий вопрос:

Методологически принято, что каждый класс должен реализовывать интерфейс? Считается ли это плохой практикой не делать этого? Можете ли вы описать ситуацию, когда использование интерфейсов не очень хорошая идея?

Редактировать: Лично мне нравится идея использовать интерфейсы для всего как методологии и привычки, даже если это явно не выгодно. Eclipse автоматически создал файл класса со всеми методами, поэтому он все равно не тратит время.

Ответы [ 13 ]

0 голосов
/ 04 августа 2017

Интерфейс подобен договору между поставщиком услуг (сервером) и пользователем такой услуги (клиентом).

  • Если мы разрабатываем веб-сервис и выставляем остальные маршруты через классы контроллера классы контроллера могут реализовать интерфейсы и эти интерфейсы действуют как соглашение между веб-сервисом и другие приложения, которые используют этот веб-сервис.
  • Java-интерфейсы типа Сериализуемый , Клонируемый и Удаленный используется для указания чего-то компилятору или JVM. Когда JVM видит класс которые реализуют эти интерфейсы, он выполняет некоторые операции над Поддержка сериализации, клонирования или удаленного вызова метода. Если вашему классу нужны эти функции, вам придется реализовать эти интерфейсы.

0 голосов
/ 18 апреля 2010

Использование интерфейса сделает вашу среду приложений устойчивой к изменениям. Поскольку, как я упоминал здесь ( Multiple Inheritance Debates II: согласно Stroustrup ), множественное наследование было отменено в java и c #, о чем я сожалею, всегда следует использовать интерфейс, потому что вы никогда не знаете, каким будет будущее. *

0 голосов
/ 17 апреля 2010

Когда я проектирую новую систему с нуля, я использую компонентно-ориентированный подход, каждый компонент (10 или более классов) предоставляет интерфейс, что позволяет мне (иногда) использовать их повторно.

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

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

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