![]() |
CodeRage 2022: Observer - simpel und elegant
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Uwe,
ich habe gerade mal durch deinen Vortrag geschaut. Vielen Dank für die sehr schöne Session, da zeigst Du wirklich perfekt wie man von den ollen Events weg zu einem schönen, schlanken Design kommen kann. Alles sehr schön sauber getrennt und modular lauffähig, fast schon ein halbes MVVM :-D Was mich da umtreibt sind die Validators, wo es laut Deiner Aussage auf die Reihenfolge der AddXxx Einträge ankommt. Das fände ich als einzige Stelle verbesserungswürdig, um solche blöden Fehler sauber abzufangen. Anhang 55156 Was ich mich frage ist, ob man nicht die Reihenfolge der AddXxx während des Aufrufs testen kann und bei falscher Reihenfolge von AddValidator eine Exception werfen kann. Weil Du in erster Linie class helper benutzt hast ist durch das modulare Design wohl keine einfache Abfrage möglich, welcher Oberserver/Validator dem Control bereits zugewiesen wurde. Das Verwenden von Interposern, um irgendwelche Variablen zu den Controls hinzuzufügen, ist auch nicht so elegant. Im letzten Teil hast Du dann im TObservableDataWrapper diese Observer zusammengefasst, das würde einen solchen Test wohl ermöglichen, aber packt natürlich wieder verschiedenen Dinge zusammen. Dieser Wrapper sollte solche Probleme mit der Reihenfolge doch abfangen können. Gibt es da eine schöne Lösung die jeweils zu jedem Control gehörenden Oberserver/Validatoren zu ermittlen, oder ist das vielleicht schon in Deiner Lösung drin ? Das Video ging jetzt schön flott, ich muss da sicher nochmal in Ruhe reinschauen, wird es die verschiedenen Ausbaustufen nochmal separat auf ![]() |
AW: CodeRage 2022: Observer - simpel und elegant
Zitat:
Im gezeigten Fall wird der Wert in die Instanz übertragen, aber das soll nur für gültige Werte passieren. Wenn man jetzt dort nochmal die Abfrage macht, kann der Validator ja auch später kommen:
Delphi-Quellcode:
MyStringEdit.AddObserver(procedure(AValue: string) begin if Data.IsMyStringValidNoMsg(AValue) then Data.MyString := AValue end);
MyStringEdit.AddValidator(Data.IsMyStringValid); Zitat:
Leider kann man auch keine Prioritäten für die Observer mitgeben, da die in einem private Dictionary verwaltet werden und man an die jeweiligen Listen nicht wirklich herankommt. Zitat:
Zitat:
Zitat:
Zitat:
![]() |
AW: CodeRage 2022: Observer - simpel und elegant
(Github Source im
![]() |
AW: CodeRage 2022: Observer - simpel und elegant
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
![]() |
AW: CodeRage 2022: Observer - simpel und elegant
Hallo Uwe,
ja super, das macht die Sache noch runder und kann man sicher an zig Stellen gut gebrauchen. Danke für die Mühe, schaue ich mir nächste Woche nochmal genauer an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz