Skip to content

Architecture (FR)

Thanh-Son-Philippe Lam edited this page Apr 25, 2019 · 3 revisions

L'application utilise une architecture reposant sur les Android Architecture Components (AAC). Plus précisément, elle utilise les composantes suivantes :

Composants Responsabilités
Activity/Fragment Les Activity et les Fragment prennent en charge l’interface graphique. Ils présentent notamment des données obtenues à partir d'un LiveData. Le fonctionnement est celui du patron Observateur. À leur création, un Activity ou un Fragment s'abonne à un ou plusieurs LiveData fournis par le ViewModel. Lors d’un changement, les LiveData avertira l'observateur qui pourra alors mettre à jour l’interface graphique.
LiveData Les LiveData sont des objets servant à contenir des données. Ils peuvent être observés par des LifecycleOwner tels que les activités et les fragments. Les LiveData respectent le cycle de vie de leurs observateurs et les informent des changements seulement si ceux-ci sont actifs.
ViewModel Les ViewModel fournissent des données à des activités ou des fragments. Les ViewModel contiennent des LiveData et permettent à celles-ci de survivre aux changements de configuration tels que la rotation de l'écran. Les LiveData sont obtenus à partir de modules de Repository.
UseCase Les UseCasedéfinissent les opérations requises par l'application. Pour ce faire, ils communiquent avec des Repository afin de récupérer des données pour ensuite les traiter et finalement les retourner aux ViewModel sous forme de LiveData.
Repository Les modules de Repository ont la responsabilité de récupérer des données et de les retourner sous forme de LiveData aux UseCase. Pour ce faire, ils agissent en tant que médiateur entre les différentes sources de données. Dans ce cas, il s'agit de la BD et des différents API. Tout d’abord, ils doivent tenter d’obtenir les données contenues dans la base de données. Celles-ci sont retournées si elles existent. Cela permet à l’interface graphique de les afficher en attendant la récupération des nouvelles données provenant d’un module d’API. Après l’obtention des nouvelles données, le Repository met à jour la base de données et les nouvelles données sont acheminées vers l’interface graphique.
Resource Les données acheminées à partir d’un module de Repository vers l’interface graphique sont contenues dans la classe Resource. Cette dernière a la responsabilité d’indiquer le statut associé à ces données. Ceci permet aux observateurs de savoir si le chargement des données a réussi, est en cours ou a échoué.
DB La base de données utilise la librairie Room afin de persister les données de l’application. Les données sollicitées sont retournées sous la forme d’un LiveData.
API Les modules d'API ont la responsabilité de transmettre des requêtes à un service web afin de récupérer les données. Pour ce faire, les modules d'API utilisent la librairie Retrofit. Cette dernière retourne un objet de l'interface Retrofit2.Call. Cet objet est adapté en LiveData avant d’être retourné.
ApiResponse Un ApiReponse représente une réponse retournée par un service web. ApiResponse permet la conversion des objets de l'interface Retrofit2.Call en LiveData.