"Cada familia tiene su propio Olivier", o cómo se nos ocurrió otra arquitectura de varios módulos

Hoy quiero familiarizarte con la opción de construir una arquitectura multimódulo para Android. Pero primero, asegúrese de recordar el concepto de Arquitectura limpia y por qué generalmente necesita pensar en la arquitectura de su código.





¿Por qué se necesita la arquitectura?

¿Cuál es el objetivo de alguien que alguna vez ha escrito o leído los informes de desarrollo de software de otra persona? Suele ser una de dos cosas: 





  • o una persona quiere resolver un problema aplicado específico,





  • o quiere que su producto sea mejor. 





Entonces, ¿qué es "mejor"? Recientemente, esta pregunta ha ido surgiendo cada vez más en el contexto de la arquitectura de un producto de software. Después de todo, una arquitectura subyacente potente es una métrica importante para la escalabilidad de la aplicación. Para realizar cambios en el proyecto, es posible que deba volver a escribir la aplicación casi por completo. En tales casos, el código está estrechamente acoplado . El uso de una arquitectura limpia ayuda a resolver este problema. 





SOLID-. . ( ) « » 2012 .





, «». 





Fuente: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

, MVC, MVP, MVVM, MVI lean architecture. , , .





, ?





. .  





Domain-: -. — Kotlin android-.





Data-: domain-, .





Presentation-: domain-, data-, android UI-.





, , : - , :





  1. application, : Domain Data Ui.





  2. application - feature, . 





, «feature» — , , , , . — « ». 





, , , :





, . LoginDataDependencies .





«» — API, .





  API — .  Dagger2. 





Dagger2.





, . . , . : - , - . — , , , . 





, - . Dagger 2. , .





, , , , feature : «Data Domain Presentation»





, , , 10 feature, 30 . ? - common , utils , . 





 

, . - , .





, , , .. 





:





, — , . , , . , , , UI , API/ - . — , , , , json, API? . 





: , endpoint  API, , UI ? - ? , ! ! , . , . 





, — . . , , , , . . 





.









  • / ( -, Ui) — data /sealed classes;





  • .





DI , — Data Ui — , , Dagger. 





:





  • DTO ( , );





  • API; 





  • ;





  • DTO , - , ;





  • DI 3 : 





    • Module — , ;





    • Component, Dependency;





    • Dependency ( , baseUrl API, , common — Retrofit, Json Moshi. , / providers — , ).





UI : , UI , , . . 





  • DI 4 : 





    • Module; 





    • Component; 





    • () Dependency ; 





    • UiChildComponentProvider — , DI, , « » « », . :





fun provide(module: FeatureDataModule): FeatureDataComponent







  • / DI — , -.





, / Dagger :





  , / :





  • — , . «» , . —   ,   « ».





  • — «». HostFragment: ,  / . ( , flow) — (, ).





, ?





  1. . : . 





  2. . , , .





  3. . , .





  4. . , , , , . .





, , / , , .








All Articles