当前位置:网站首页>Le Grand Dieu des octets pousse des milliers de pages de notes d'apprentissage PDF, Ali Android interview must ask

Le Grand Dieu des octets pousse des milliers de pages de notes d'apprentissage PDF, Ali Android interview must ask

2021-09-15 04:31:16 Mb612e29786577c

Programme de mise en œuvre

Dépendance directe

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Programmeur

Cette approche est simple à mettre en œuvre,Mais le couplage est trop grave,Difficile à entretenir et à développer,Au fur et à mesure que le projet grandit, les modules augmentent,Les dépendances peuvent être très complexes,Cette méthode n'est pas recommandée.

Événement ou communication radio

EventBus:?Nous connaissons très bien le cadre de communication du type Event bus,Très flexible,Mise en œuvre par annotation,Mais il est difficile de retracer les événements.Diffusion:?Un des quatre composants d'Android,Envoyer les données de configuration de diffusion dans un module,Enregistrer les données de réception de radiodiffusion dans un autre module,L'utilisation de la radiodiffusion comme moyen de transmission de données consomme plus de ressources que d'autres moyens.

Résumé:?BroadcastReceiver、EventBus,Très flexible,Il n'y a pas de couplage entre les modules,Mais le Code est mal lisible,Difficile de retracer les événements,Pas très recommandé.

Routage des communications

Il n'y a pas de dépendance entre le module et le module,C'est qu'ils fonctionnent tous les deux,En termes simples, c'est le routage de la communication qui mappe les relations,Il s'agit également d'un programme courant,Le cadre open source le plus couramment utilisé est celui d'AliARouter.

ARouterApplications typiques

De l'extérieurURLMapping to Internal Page,Et la transmission des paramètres et la résolution des sauts de page entre les modules,Découplage inter - modules intercepter le processus de saut gérer l'atterrissage、Les points d'enfouissement et autres modules logiques transversauxAPIAppelez,Découplage des composants par inversion contrôlée.

Communication orientée interface

Ce qui précède n'est qu'une simple introduction,Voici comment la communication est découplée par l'interface,Commençons par quelques questions.

Qu'est - ce que la programmation orientée interface?

Interface tout le monde connaît bien,La Programmation orientée interface dont il est question ici,Ce n'est pas seulement ce qu'on appelle java Dans interface,C'est un super Type,Peut être une interface ou une classe abstraite.

L'interface orientée est une idée de programmation plus avancée que la programmation orientée objet,C'est un système attaché à la programmation orientée objet,Ça fait partie de,C'est l'une des essences idéologiques du système de Programmation orientée objet.Programmation orientée interface son idée centrale est de séparer l'abstraction de la mise en oeuvre,Concevoir le code à partir du niveau du composant,Atteindre l'objectif d'une haute cohésion et d'un faible couplage.L'approche de Programmation orientée interface est,Définir d'abord le module d'interface sous - jacent,C'est - à - dire?Protocoles de communication et conventions fonctionnelles?,C'est le fournisseur qui remplit les fonctions et les capacités correspondantes.Hiérarchie dans l'architecture,Il n'est pas nécessaire de se concentrer sur la mise en oeuvre concrète,Le Protocole peut être développé rapidement par l'intermédiaire d'interfaces,Avec la capacité de fournirapi,Pour la capacité d'exposition de la couche supérieure à travers l'interface,Pour la couche inférieure, il suffit de dépendre de la couche d'interface pour être équivalent à une dépendanceapi.

Avantages de la programmation axée sur l'interface?

Une grande flexibilité ne dépend pas d'entités spécifiques,La couche d'implémentation peut être modifiée et commutée arbitrairement.Interdépendances possibles dans la modularisationservice(Interface Layer)Ou dépend de plus d'un.?

?Utilisation dans la modularisationPour les interfaces(interface)OuapiLes couches sont collectivement appeléesservice,Cela signifie que le fournisseur de services.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_02

Pour,Chaque module Est une structure d'ingénierie indépendante,Chaque module Ils ont tous leurs propres Service ,Pour unifier l'exposition actuelle module Capacité et services fournis à l'extérieur.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_03
Pour module C'est la structure du projet dans le même projet,service Peut être placé dans un Module En bas.,Nous sommes collectivement appelés Mediator,L'objectif est de réduire Module Création et maintenance.Supposons que votre projet ait20Opérations Module Si vous en ajoutez un en même temps service La couche crée Module Double la quantité.Parce que toutes les classes d'interface stockées ici,Et chaque entreprise Module Les services fournis à l'extérieur ne sont pas trop volumineux,Ce n'est pas seulement une suggestion qu'il n'y a pas de pratique standard.

Bien sûr, il y a aussi des dessins plus complexes,Un Module C'est différent service La réalisation est illustrée à la figure,Il n'y a pas de détails ici.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Programmeur_04

Utilisation et conception en ingénierie pratique

Il y a beaucoup de projets dans les projets réels qui développent les deux versions simultanémentPadAvecPhone,Il y a deux projets distincts,Certains sont utilisés dans le même projet flavor Changer de projet,Je passe par flavor Exemples de structures d'ingénierie commutées.Regardez d'abord le schéma de structure de l'ensemble du projet:

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_05

Je vois. module La structure est divisée en trois parties,common, pad, phone, Si chaqueservice L'indépendance augmentera3Double Module Nombre.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Android_06

Utilisez un Mediator Module Gérer ces service C'est bien contrôlé module Nombre.

Service Création

In module_mediator Les affaires module En bas. common,pad、pone Créer séparément ci - dessousICommonService, IService(pad), IService(phone).ICommonService:Services publics.IService(pad):padServir et hériterCommonService.IService(phone):phoneServir et hériterCommonService.Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_07

Note::Pourquoi ne pas,PadServiceAvecPhoneService,Parce quepadAvecphoneUne seule version existe en même temps,L'utilisateur n'a qu'à se soucier de ce que vous fournissezServicePas besoin de distinguer les versions,Et c'est une relation héréditaire qui peut aussi être partagée.

Service Réalisation

Dépendance Mediator :Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_08

En affaires common\pad\phone module Réaliser séparément ci - dessous,ICommonService, Service(pad), IService(phone) ,In common module Création CommonServiceImpl Réalisation ICommonService,In pad、phone module Créer séparément ServiceImpl Réalisation correspondante IService Et hériter avec CommonServiceImpl.Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Programmeur_09

Service Inscription

Les méthodes d'enregistrement sont généralement codées pour l'enregistrement,Ou par annotation.Ça pourrait être dans Application L'inscription peut également être faite dans le cadre d'une entreprise Module Inscrivez - vous,Si vous utilisez des annotations, vous pouvez vous inscrire automatiquement,Cela dépend de la façon dont le projet est réalisé.Exemple:

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Programmeur_10

Explication MediatorServiceFacator,C'est juste une usine de service et une classe d'interface,Le rôle est de gérer les différents acteurs Service La fonction principale est d'enregistrer et d'obtenir Service.Le code ci - dessus est celui dans lequel un membre est inscrit Service.

Vous pouvez voir que cette fonction n'a que deux arguments,L'un est l'interfaceclassL'un est la classe d'implémentationclass,Premier paramètrecls:Il sera key Pour utiliser,Deuxième paramètreimplClass:Il sera value Pour utiliser.

Service Utiliser

Adoption MediatorServiceFacator Chargement paresseux pour obtenirserviceObjet,Obtenir un objet vide si l'entreprise n'est pas enregistrée.

Enregistré service Il n'est pas créé lorsqu'il n'est pas utilisé,S'il est utilisé, il sera mis en cache,Le prochain appel revient directement à.(La première est créée par réflexion)Exemple:

  1. In mediator Membres du module inférieur CommonService Moyenne Définit une méthode floue pour interroger les membres.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Android_11

  1. Sous le module membres common Cette fonction est implémentée dans.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_12

  1. Sous le module membres pad Cette mise en œuvre a été héritée de.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_13

  1. Dans d'autres modules pad Utilisez cette fonction ci - dessous.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_14

Vous pouvez voir obtenir Service Il suffit de passer à l'interface correspondante,Pour l'utilisateur ne se soucie pas de l'implémentation,Il suffit de définir l'interface en cours de développement,Les camarades de classe coopératifs peuvent entrer dans le développement normal.Les étudiants attentifs peuvent voir,Le type de données retourné est également une classe d'interface,Pourquoi ne pas retourner directement à un java Et la classe??La raison principale est que les deux parties sont atteintes par la méthode d'interface api Accord,Par exemple getName() :String La méthode consiste à obtenir l'effet convenu en renvoyant la valeur du nom de la méthode,Cela ne dépend pas de la mise en œuvre concrète.

L'exemple ci - dessus montre qu'il est principalement divisé en trois parties:1、Définir l'interface.2、Interface d'implémentation du fournisseur.3、L'utilisateur obtient l'utilisation du service par l'intermédiaire de l'usine de service.C'est facile pour l'utilisateur de venir,Pas besoin de se soucier de la réalisation,L'implémentation est directement accessible via l'interface,Et les résultats obtenus peuvent être utilisés directement,Pas besoin de sérialisation.

Avec le routage de la communication pourquoi nous utilisons encore la programmation orientée interface?

Le mode de routage résout bien le problème de couplage,Mais ses appels de méthode sont statiques,La valeur de retour de la participation au transfert ne peut être que de type de base,Si l'objet doit être sérialisé et désérialisé,A une certaine influence sur les performances.C'est comme régler l'interface de fond,Tout en réduisant la lisibilité du Code, Pour app Pour tous Module Tout est dans la même application,Ces opérations de sérialisation ne sont pas nécessaires.

Mauvaise gestion des affaires complexes,Par exemple, une entreprise exige plus d'une communication,Le mode de routage n'est pas facile à gérer,Et la communication par interface peut être facilement résolue.Par exemple:Une opération de lecture de carte,L'entreprise doit l'ouvrir、Fermer、Suspendre les opérations dans plusieurs états, etc.L'interface peut renvoyer directement une carte de lecture service Controller, Cela permet d'effectuer directement les opérations de contrôle correspondantes.

Byte God pousse des milliers de pagesPDFNotes d'étude,Ali!AndroidL'interview est obligatoire._Développement mobile_15

Comme le montre le code ci - dessus,Le résultat du rappel supérieur est accompagné d'un rappel d'une interface de contrôle,Cela permet à l'utilisateur de faire marche arrière.

Fin

.Certains élèves ont des questions sur la façon d'apprendrematerial designContrôle,Mon conseil estVas - y.GitHubFouillez.,Il y a beaucoup d'exemples donnés par des pairs,Ces châtaignes sont assez bonnes pour commencer.

Un ami a dit que si tu bouges vraiment,BesoinNDKEtJVMLa connaissance d'attendre,Première apparition**NDKCe n'est pas un mystère,**Suivez les étapes officielles et vous saurez ce qui se passe,Ce n'est rien d'autre que quelques formats de code et natifs/JAVAInteraction mémoire,Les plus avancés ont des primitives/JAVAInteraction thread,L'interaction thread est un peu douloureuse,Mais ce serait bien d'éviter de l'utiliser d'habitude,Et pour les débutantsNDKPourquoi?,D'après mon expérience antérieure,Uniquement dans les communications audio et vidéo et un traitement de signal intégré(Hors ligne)Utilisé dans deux projets de,Le traitement intégré du signal estJAVA->NDK->.SO->MATLABC'est comme ça que j'ai appeléMATLABCode,La plupart des autres sont pour le jeu,Quelqu'un d'une société Internet normale vous donneraSOEnveloppé.
Quant àJVM,La partie à maîtriser,Fais - moi confiance.,Tu vas maîtriser,Tu n'aurais pas dû,Il y a ces études spécialiséesJVMQuelqu'un de,Pourquoi ne pas prendre le temps de regarder le système informatique,Principes de compilation.

Un mot.,Écrivez plus souvent et pratiquez plus,C'est la qualité la plus élémentaire du programmeur,Essayez de presser le temps,Lire les bases théoriques,JVMPas le futur30La seule machine virtuelle de l'année,JAVAIl n'est plus nécessaire de balayer l'avenir30L'industrie,D'autres systèmes et langues peuvent également émerger,Mais votre solide théorie vous permettra rapidement de comprendre et d'apprendre une langue ou un cadre,La plupart de ce que vous écrivez habituellement vous permettra d'appliquer rapidement et habilement ce que vous avez appris.
Débutant,Un mot.,Plus de pratique..

 CodeChinaProjet Open Source:《AndroidRésumé des notes d'étude+Vidéo d'architecture mobile+Le vrai problème de l'interview de Dachang+Code source du projet》

版权声明
本文为[Mb612e29786577c]所创,转载请带上原文链接,感谢
https://chowdera.com/2021/09/20210915043013996X.html

随机推荐