Junior — Middle
Можеш ли да дадеш пример за реализиране на патърна фабричен метод в кода?
sobes.tech AI
Отговор от AI
Моделът Factory Method позволява създаването на обекти, без да се посочва конкретният клас на създавания обект. В Flutter това е удобно за създаване на widget-и с различна логика.
Пример за реализация на Dart:
abstract class Button {
void render();
}
class AndroidButton implements Button {
@override
void render() {
print('Рендериране на бутон стил Android');
}
}
class IOSButton implements Button {
@override
void render() {
print('Рендериране на бутон стил iOS');
}
}
abstract class Dialog {
Button createButton();
void render() {
Button button = createButton();
button.render();
}
}
class AndroidDialog extends Dialog {
@override
Button createButton() => AndroidButton();
}
class IOSDialog extends Dialog {
@override
Button createButton() => IOSButton();
}
void main() {
Dialog dialog;
// В зависимост от платформата създаваме необходимия диалог
bool isAndroid = true;
if (isAndroid) {
dialog = AndroidDialog();
} else {
dialog = IOSDialog();
}
dialog.render();
}
В този пример фабричният метод createButton позволява на подкласовете да създават обекти от различни типове бутони, а клиентският код работи с абстракции.