2010-06-20 25 views

Odpowiedz

6

Najbardziej odpowiednią odpowiedzią tutaj jest prawdopodobnie wystawienie event gdzieś w twojej warstwie biznesowej. Twój kod UI może zasubskrybować zdarzenie i obsługiwać zdarzenie, przełączając się do wątku interfejsu użytkownika (jeśli to konieczne) i aktualizować się.

Następnie kod firma nie musi wiedzieć o interfejsie użytkownika i może pracować ten sam bez żadnego UI (ale tak jak wszyscy delegaci/wywołań zwrotnych, trzeba sprawdzić null przed próbą wywołania delegata) .

4

Najprostszym sposobem jest przekazanie przez warstwę użytkownika delegacji do połączenia (lub interfejsu), aby mogła wskazywać postęp.

Jest to również bardzo łatwe do przetestowania, ponieważ oddziela obawy: w testach warstwy biznesowej można przekazać delegatowi testowemu i upewnić się, że zostanie wywołany. W testach interfejsu użytkownika możesz sfałszować warstwę biznesową, a udawać, że jest postęp, dzwonić do odpowiedniego delegata i sprawdzać poprawność aktualizacji interfejsu użytkownika.

Powiązane problemy