Существуют ли рекомендации относительно того, какой код используется в com.myproject.api против com.myproject.api.impl?

#android #api #package #structure

#Android #API #упаковка #структура

Вопрос:

Я видел этот шаблон структуры пакета несколько раз. Совсем недавно я просматривал Last.fm Код приложения для Android и хотелось бы понять, почему некоторый код находится в fm.last.api по сравнению с fm.last.api.impl. https://github.com/c99koder/lastfm-android /

Ответ №1:

Пакет fm.last.api содержит интерфейсы, которые определяют общедоступный интерфейс. В пакете fm.last.api.impl находится фактическая реализация этого интерфейса.

Это редко широко используемый подход для разграничения различных проблем.

Комментарии:

1. Когда вы говорите «интерфейсы», вы используете термин свободно? Или вы имеете в виду реальные интерфейсы, в отличие от классов. Я спрашиваю, потому что fm.last.api содержит интерфейсы, а также классы. Это то, что на самом деле сбило меня с толку с самого начала.

2. В общем, я говорил о реальных интерфейсах, но, возможно, могут быть и другие необходимые классы, такие как исключения. Но я только что еще раз взглянул на ваш пример, и я могу найти пакет fm.last.api.impl, и я не могу найти никаких интерфейсов или классов вообще: github.com/c99koder/lastfm-android/tree/master/app/src/fm/last /…

3. Пакеты на самом деле находятся в библиотеке project — link