#android #dependencies
#Android #зависимости
Вопрос:
/MyProj
|---/MyApp (application module)
|----/MyData
|----class Person
|---/MyLib (library module)
|----/MyMethod
В MyData я определяю класс Person:
public class Person{
}
Как я могу ссылаться на Person в myMethod MyLib, который является библиотечным модулем?
Я не хочу переопределять Person в MyLib.
Ответ №1:
Если вы хотите иметь это в своем myLib, вам нужно добавить модуль приложения в качестве зависимости в свой myLib, ЧТО НЕВЕРНО и создает циклическую зависимость.
Чтобы предотвратить циклическую зависимость в многоуровневых шаблонах проектирования, они помещают классы моделей в отдельный модуль, чтобы все остальные модули могли их использовать.
Я предлагаю вам создать модуль модели и поместить в него все ваши модели данных, после чего вы сможете получить к нему доступ только с помощью этой последовательности зависимостей:
App -> myLib -> ModelModule
Таким образом, как app, так и myLib могут использовать ваши классы моделей. (Вам просто нужно иметь myLib в качестве зависимости от приложения и ModelModule в качестве зависимости от MyLib)
Другой простой способ — просто переместить ваши модели в myLib.
Комментарии:
1. Да, я пытался добавить модуль приложения в качестве зависимости от MyLib, но это предполагает, что модуль приложения не может быть зависимостью. Кроме того, это создаст неправильную циклическую зависимость. Я не могу переместить Person в MyLib, или новая библиотека для класса вызвала некоторые методы, определенные в MyApp. Я не могу переместить все, потому что для этого требуется много кода.
2. Всегда есть компромисс. Если вам нужен чистый код, вы должны заплатить за него 😉 если класс uset является классом модели данных, он не должен выполнять в нем никаких функций. Вы должны переместить весь слой модели. Другого чистого способа нет, поверьте мне