Podes dar um exemplo de quando o framework Android usa o padrão de projeto 'Fábrica'?
sobes.tech IA
Resposta da IA
// Exemplos de uso do Factory Method em Android
// Criação de View através de um layout XML
// O próprio LayoutInflater é uma implementação de Factory Method
LayoutInflater inflater = LayoutInflater.from(context);
View rootView = inflater.inflate(R.layout.my_layout, parent, false);
// Criação de Intent
// O construtor de Intent funciona como uma Factory Abstrata para criar objetos ComponentName
Intent serviceIntent = new Intent(context, MyService.class);
// Contexto - uma fábrica abstrata para aceder aos serviços do sistema
// Obter um LayoutInflater a partir do Contexto
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Obter um NotificationManager a partir do Contexto
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Um exemplo de uso pode ser LayoutInflater. Esconde os detalhes de criação de objetos View específicos a partir de ficheiros XML. Basta passar o recurso de layout e obter um objeto View pronto ou uma hierarquia de View. LayoutInflater atua como uma fábrica, criando diferentes tipos de vistas (TextView, ImageView, Button, etc.) de acordo com as tags no XML.
Outro exemplo é a criação de objetos Intent. O construtor Intent pode ser considerado como parte de um método de fábrica para criar um objeto abstrato que representa a ação a ser realizada.
A classe Context também funciona como uma fábrica abstrata, fornecendo acesso a vários serviços do sistema (por exemplo, LayoutInflater, NotificationManager, PackageManager) que são criados e fornecidos sob demanda.
<!-- Exemplo de layout XML processado pelo 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="Olá, mundo!" />
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Toca em mim" />
</LinearLayout>
Assim, o framework Android utiliza ativamente o padrão "Fábrica" em diferentes níveis de abstração para desacoplar e simplificar a criação de objetos.