2015-03-27 5 views
0

В ответ на этот вопрос Java Interfaces/Implementation naming convention автор предложилJava: Интерфейс для одного класса

Так что, когда у Вас есть ситуация, когда у вас есть интерфейс и одной реализации, которая не однозначно специализированные из интерфейса вы, вероятно, Дон» t нужен интерфейс.

Но что делать, если вам нужно иметь интерфейс для этого одного конкретного класса, реализующего интерфейс, так что вы можете:

  1. Код для интерфейса
  2. Уметь издеваться объект в блоке тестов

Как справиться с этой ситуацией?

+2

Ну, автор утверждает, что «возможно, не ...» не является правилом. – gtgaxiola

+0

Издевательские объекты в модульных тестах не требуют интерфейса. Существуют библиотеки, которые имеют дело с объектами (mockito и т. Д.). – Ria

+0

«Код для интерфейса» - это очень непонятная фраза. Для меня это означает создание интерфейсов, когда они вам нужны, а не объявление ваших списков как «ArrayList myList», но вместо этого использование «Список myList» и т. Д. Это определенно не означает создание бессмысленного интерфейса для каждого отдельного класса, когда вы знайте, что будет только одна реализация. Нет ничего хуже, чем увидеть «MyService» и один «MyServiceImpl». Если вы его называете «* Impl», вам не нужен интерфейс ... –

ответ

1

Вы ответили сами с «Но что делать, если вам нужно иметь интерфейс для» ....

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

+0

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

Смежные вопросы