Можеш ли да наведеш пример када Android оквир користи образац 'Фабрика'?
sobes.tech АИ
Одговор од АИ
// Primeri korišćenja Factory Method u Androidu
// Kreiranje View putem XML šablona
// Sam LayoutInflater je implementacija Factory Method
LayoutInflater inflater = LayoutInflater.from(context);
View rootView = inflater.inflate(R.layout.my_layout, parent, false);
// Kreiranje Intent
// Konstruktor Intent deluje kao Abstract Factory za kreiranje objekata ComponentName
Intent serviceIntent = new Intent(context, MyService.class);
// Context - apstraktna fabrika za pristup sistemskim servisima
// Dobijanje LayoutInflater iz Context-a
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Dobijanje NotificationManager-a iz Context-a
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Primer korišćenja može biti LayoutInflater. On skriva detalje kreiranja specifičnih objekata View iz XML fajlova. Mi jednostavno prosleđujemo resurs šablona i dobijamo spreman objekat View ili hijerarhiju View. LayoutInflater deluje kao fabrika, kreirajući različite tipove prikaza (TextView, ImageView, Button itd.) u zavisnosti od tagova u XML-u.
Drugi primer — kreiranje objekata Intent. Konstruktor Intent se može posmatrati kao deo fabričkog metoda za kreiranje apstraktnog objekta koji predstavlja akciju koju je potrebno izvršiti.
Klasa Context takođe deluje kao apstraktna fabrika, pružajući pristup raznim sistemskim servisima (npr. LayoutInflater, NotificationManager, PackageManager), koji se kreiraju i obezbeđuju na zahtev.
<!-- Primer XML šablona koji obrađuje 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="Zdravo, svet!" />
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Klikni me" />
</LinearLayout>
Takođe, Android framework aktivno koristi obrazac "Fabrika" na različitim nivoima apstrakcije za dezintegraciju i pojednostavljenje kreiranja objekata.