Zaimplementuj wzorzec obserwatora w Dart
Chciałbym zaimplementować wzorzec obserwatora w Dart, ale nie jestem pewien, jak się do tego zabrać.
Powiedzmy, że mam klasę:
class MyClass {
String observed_field;
}
Teraz, kiedy zmieniam pole, chciałbym wydrukować ciąg „Obserwowane pole zmieniony” w konsoli. Całkiem proste do zrobienia z ustawieniem użytkownika:
class MyClass {
String _observed_field;
get observed_field => _observed_field;
set observed_field(v) {
_observed_field = v;
print("observed_field changed");
}
}
Oczywiście, jeśli nie mam jednego, ale wiele z tych pól, nie chciałbym tworzyć tych wszystkich getterów i setterów. Oczywistym rozwiązaniem teoretycznym jest dynamiczne dodawanie ich do klasy z czymś podobnym (nie jest to działający kod, tylko przykład tego, jak chciałbym wyglądać):
class MyClass
String _observeable_field;
String _observeable_field_2;
observe(#observeable_field, #observeable_field_2);
end
Czy to możliwe? Dodatkowo super byłoby nie mieć tych pól zdefiniowanych powyżejobserve()
zadzwoń, ale napisz coś w stylu:
observe(String: #_observeable_field, String: #_observeable_field_2);
Aby te pola były deklarowane automatycznie.