Clean-Swift – ogólny zarys architektury

Clean-Swift – ogólny zarys architektury
Architektura Clean-Swift jest bardzo prostą architekturą, niewymagającą żadnych dodatkowych bibliotek. Składa się z 3 warstw, które bardzo dobrze rozdzielają widoki od logiki. Sprawdź, czym się charakteryzują i jakie są między nimi zależności.

Clean-Swift – obieg danych

Przepływ informacji w Clean-Swift jest jednokierunkowy, co widać na załączonej poniżej grafice. Oznacza to, że jeśli np: po naciśnięciu przycisku mamy zmienić wartość pola tekstowego, to informacja (po naciśnięciu przycisku) powinna trafić do interactora. On przygotuje model i przekaże go do presentera, natomiast presenter upiększy tekst, ustalając krój czcionki i jej kolor, a następnie przekaże jako nowy model do ViewController’a w celu wyświetlenia.

Data flow chart

ViewController

To warstwa odpowiadająca za widok, która powinna być możliwie “jak najgłupsza”, czyli inaczej mówiąc, nie powinna zawierać żadnej logiki. Warstwa ta odpowiada tylko za wyświetlanie danych dla użytkownika oraz zbieranie od niego interakcji. Do warstwy ViewController’a podpięta jest klasa routera, która odpowiada za nawigację pomiędzy widokami.

Interactor

Jeśli chodzi o interakcje zbierane z ViewController’a, to właśnie każda z nich powinna trafić do interactora. Czyli nie jest ważne, czy użytkownik naciśnie na przycisk i wpisze jakiś tekst w polu input – wszystkie te interakcje powinny być wysłane właśnie do tej warstwy. To właśnie na niej spoczywa praktycznie cała logika aplikacji. Jeśli istnieje potrzeba przekazania informacji z innego ViewControllera (np. z jakiegoś modalnego, który wyświetlimy jako modalny) to informacje, które chcemy przekazać z innego ViewControllera powinny być wysłane właśnie do warstwy Interactora.

Dla przejrzystości i uniknięcia przeładowania kodem klasy, interactor wspiera się klasami pomocniczymi tzw. worker’ami. Jest to nic innego, jak zwykła klasa wykonująca określone zadania na żądanie interactora. Interactor może posiadać dowolną ilość workerów, które to mogą wykonywać operację na bazach danych, pobierać dane z API itd.

Presenter

Jest to warstwa odpowiadająca za przygotowanie do wyświetlenia tego, co wystawił jej interactor. Czyli opakowanie stringa w attributed string, ustawienie koloru tła przycisku, widoku itp.

Architektura ta jest bardzo prosta w użyciu i zarazem bardzo czytelna. Zachęcam do jej używania. Jeśli chcecie dowiedzieć się więcej na ten temat, polecam stronę poświęconą tej architekturze: clean-swift.com. Przykładowa aplikacja znajduje się pod linkiem: https://github.com/Holdapp/Clean-Swift-Example.

Dowiedz się więcej

Dynamiczna lokalizacja powiadomień na iOS-a, czyli jak wysyłać wiadomości w różnych językach

Jak ustanowić łącznik pomiędzy użytkownikiem, dostawcą a aplikacją? Wykorzystaj powiadomienia systemowe. Dzięki nim użytkownik szybko otrzymuje najnowsze informacje. To rozwiązanie łatwo zastosujesz w aplikacjach zorientowanych na jeden rynek. Problemy zaczynają się, gdy treści muszą być tworzone w różnych językach. Wtedy pomocą służy dynamiczna lokalizacja zdalnych powiadomień bez wykorzystania własnego serwera.
Przeczytaj

Jak wykorzystać feature flags, żeby zyskać większą kontrolę nad aplikacją?

Chyba każdy, kto zajmuje się budową oprogramowania może opowiedzieć kilka historii o niedziałających funkcjach. Starannie tworzymy aplikacje z niewielkich elementów, stosujemy zaawansowane wzorce architektury, ale i tak czasem coś odmawia posłuszeństwa. Skutkuje to błędami, a nawet awarią systemu. Wtedy sytuację może uratować feature toggling. Sprawdź, jak wdrożyć feature flags i zwiększ stabilność swojej aplikacji.
Przeczytaj

WebSockets na iOS-a – komunikacja w czasie rzeczywistym, która nie spowalnia aplikacji

Kiedy chcesz pobrać dane do aplikacji, zwykle pewnie wykorzystujesz interfejs API RESTful. Wystarczy zapytać serwer o paczkę danych i gotowe. To dobra metoda, jeśli aplikacja nie potrzebuje stałego dostępu do nowych informacji. A co jeśli treści muszą się odświeżać w czasie rzeczywistym? Wtedy opóźnienie może np. uniemożliwiać dokonanie zakupu albo postawienie zakładu sportowego. Na szczęście z pomocą przychodzą WebSockets na iOS-a. Sprawdź, jak je zaimplementować i dlaczego warto to zrobić.
Przeczytaj

Wycena projektu

Sprawdź, jak wykorzystujemy naszą wiedzę w praktyce i stwórz z nami swój projekt.

Dlaczego warto rozwijać z nami projekty?

Logo Mobile Trends Awards

Mobile Trends Awards 2017

Nominacja w kategorii
M-COMMERCE

17

opinii klientów

Clutch logo
Logo Legalni bukmacherzy

Nagroda Legalnych Bukmacherów 2019

Najlepsza aplikacja mobilna

60+

zrealizowanych projektów