Java: интерфейс для одного класса

В ответ на этот вопрос автор предложил Java Interfaces/Implementation именования

Поэтому, когда у вас есть ситуация, когда у вас есть интерфейс и одна реализация, которая не является однозначно специализированной из интерфейса, вам, вероятно, не нужен интерфейс.

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

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

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


person gemasp    schedule 27.03.2015    source источник
comment
Ну, автор утверждает, что probably don't... не является правилом.   -  person gtgaxiola    schedule 27.03.2015
comment
для имитации объектов в модульных тестах не требуется интерфейс. Есть библиотеки, которые работают с объектами (mockito и т.д.).   -  person Ria    schedule 27.03.2015
comment
Код для интерфейса — очень неправильно понятая фраза. Для меня это означает создание интерфейсов, когда они вам нужны, а не объявление ваших списков как ArrayList myList, а вместо этого использование List myList и т. д. Это определенно не означает создание бессмысленного интерфейса для каждого отдельного класса, когда вы знаете, что будут только когда-либо быть одной реализацией. Нет ничего хуже, чем видеть MyService и один MyServiceImpl. Если вы называете его *Impl, вам не нужен интерфейс...   -  person David Lavender    schedule 27.03.2015
comment
Если я правильно читаю OP, он задает более общий вопрос о том, разумно ли кодировать интерфейс, даже если это не строго необходимо. К сожалению, вариант ответа зависит от того, что я лично не фанат, но мы должны сделать поправку на читабельность и использование в будущем.   -  person    schedule 27.03.2015


Ответы (1)


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

Если вам нужно иметь интерфейс (независимо от причины), то по определению вам нужно иметь интерфейс.

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