Sobes.tech
Middle

Android framework'у 'Фабрика' дизайн үлгүсүн колдонгон мисалды бере аласызбы?

sobes.tech AI

AIден жооп

// Androidда Factory Method колдонулушуна мисалдар
// XML шаблону аркылуу View түзүү
// LayoutInflater — бул Factory Methodтин ишке ашырылышы
LayoutInflater inflater = LayoutInflater.from(context);
View rootView = inflater.inflate(R.layout.my_layout, parent, false);

// Intent түзүү
// Intent конструктору ComponentName объекттерин түзүү үчүн Abstract Factory катары иштейт
Intent serviceIntent = new Intent(context, MyService.class);

// Context — системдик кызматтарга кирүү үчүн абстракт фабрика
// Contextтен LayoutInflater алуу
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

// Contextтен NotificationManager алуу
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

Колдонулушу мүмкүн болгон мисал — LayoutInflater. Ал XML файлдардан View объекттерин түзүү деталдарын жашырады. Биз жөн гана шаблон ресурсын өткөрүп, даяр View же View иерархиясын алабыз. LayoutInflater — бул фабрика, ал ар кандай түрдөгү көрсөтүүлөрдү (TextView, ImageView, Button жана башка) XML тегдерине негизделген түрдө түзөт.

Башка мисал — Intent объекттерин түзүү. Intent конструктору — бул абстракт объект түзүү үчүн фабрика ыкмасынын бир бөлүгү катары каралышы мүмкүн, ал аткарылуучу иш-аракетти билдирет.

Context дагы — бул абстракт фабрика, ал ар кандай системдик кызматтарга (мисалы, LayoutInflater, NotificationManager, PackageManager) кирүүгө мүмкүндүк берет, алар сураныш боюнча түзүлүп, берилет.

<!-- LayoutInflater иштеткен XML шаблон мисалы -->
<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="Салам, дүйнө!" />

    <Button
        android:id="@+id/myButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Мени бас" />

</LinearLayout>

Ошентип, Android фреймворку ар кандай деңгээлдерде "Фабрика" паттернин активдүү колдонуп, объект түзүүнү бөлүп, жөнөкөйлөтөт.