Sobes.tech
Middle

Môžeš uviesť príklad, kedy framework Android používa vzor 'Továrňa'?

sobes.tech AI

Odpoveď od AI

// Príklady použitia Factory Method v Android
// Vytvorenie View cez XML šablónu
// Sam LayoutInflater je implementácia Factory Method
LayoutInflater inflater = LayoutInflater.from(context);
View rootView = inflater.inflate(R.layout.my_layout, parent, false);

// Vytvorenie Intent
// Konštruktor Intent pôsobí ako Abstract Factory pre vytváranie objektov ComponentName
Intent serviceIntent = new Intent(context, MyService.class);

// Context - abstraktná fabrika pre prístup k systémovým službám
// Získanie LayoutInflater z Contextu
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

// Získanie NotificationManager z Contextu
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

Príklad použitia môže byť LayoutInflater. Skrýva detaily vytvárania špecifických objektov View z XML súborov. Jednoducho odovzdáme zdroj šablóny a získame hotový objekt View alebo hierarchiu View. LayoutInflater pôsobí ako továreň, vytvárajúca rôzne typy zobrazení (TextView, ImageView, Button atď.) v závislosti od tagov v XML.

Iný príklad — vytváranie objektov Intent. Konštruktor Intent možno považovať za časť fabrickej metódy na vytváranie abstraktného objektu, ktorý predstavuje akciu, ktorú je potrebné vykonať.

Trieda Context tiež pôsobí ako abstraktná fabrika, poskytujúc prístup k rôznym systémovým službám (napr. LayoutInflater, NotificationManager, PackageManager), ktoré sú vytvárané a poskytované na požiadanie.

<!-- Príklad XML šablóny, ktorú spracováva 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="Ahoj, svet!" />

    <Button
        android:id="@+id/myButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Klikni ma" />

</LinearLayout>

Týmto spôsobom framework Android aktívne využíva vzor "Fabrika" na rôznych úrovniach abstrakcie na deštrukturalizáciu a zjednodušenie tvorby objektov.