Pouvez-vous donner un exemple lorsque le framework Android utilise le pattern de conception 'Factory' ?
sobes.tech IA
Réponse de l'IA
// Exemples d'utilisation de Factory Method en Android
// Création de View via un layout XML
// Le propre LayoutInflater est une implémentation de Factory Method
LayoutInflater inflater = LayoutInflater.from(context);
View rootView = inflater.inflate(R.layout.my_layout, parent, false);
// Création d'Intent
// Le constructeur Intent agit comme une Factory Abstraite pour créer des objets ComponentName
Intent serviceIntent = new Intent(context, MyService.class);
// Context - une fabrique abstraite pour accéder aux services système
// Obtenir un LayoutInflater depuis le Context
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Obtenir un NotificationManager depuis le Context
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Un exemple d'utilisation peut être LayoutInflater. Il masque les détails de création d'objets View spécifiques à partir de fichiers XML. Nous passons simplement la ressource de mise en page et obtenons un objet View prêt ou une hiérarchie de View. LayoutInflater agit comme une usine, créant différents types de vues (TextView, ImageView, Button, etc.) en fonction des balises dans XML.
Un autre exemple est la création d'objets Intent. Le constructeur Intent peut être considéré comme une partie d'une méthode de fabrique pour créer un objet abstrait représentant l'action à effectuer.
La classe Context agit également comme une fabrique abstraite, fournissant un accès à divers services système (par exemple, LayoutInflater, NotificationManager, PackageManager) qui sont créés et fournis à la demande.
<!-- Exemple de mise en page XML traitée par LayoutInflater -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bonjour, le monde!" />
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Appuie-moi" />
</LinearLayout>
Ainsi, le framework Android utilise activement le patron "Fabrica" à différents niveaux d'abstraction pour désaccoupler et simplifier la création d'objets.