Junior — Middle
Можеш ли да дајеш пример имплементације патерна фабрички метод у коду?
sobes.tech АИ
Одговор од АИ
Шабац фабричног метода омогућава креирање објеката без навођења конкретне класе објекта који се креира. У 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 омогућава подкласи да креирају објекте различитих типова тастатуре, а клијентски код ради са апстракцијама.