Robotlegs basics - PL

24
Robotlegs AS3 lightweight framework (1100 linii kodu)

Transcript of Robotlegs basics - PL

Page 1: Robotlegs basics - PL

Robotlegs AS3 lightweight framework

(1100 linii kodu)

Page 2: Robotlegs basics - PL

Czym jest framework

• Generalnie jakikolwiek zbiór klas lub bibliotek wielokrotnego użytku, Flex, jQuery, RoR...

Robotlegs – KOMUNIKACJA I WSPÓŁPRACA• Robotlegs koncentruje się na ułatwieniu komunikacji i współpracy

pomiędzy poszczególnymi częściami aplikacji• jednokierunkowa komunikacja – obiekt posiada referencję do innego i

wywołuje publiczne metody (API)• Komunikacja poprzez wydarzenia i przekazywanie wiadomości

Page 3: Robotlegs basics - PL

Charakterystyczne cechy

• mikroarchitektura• Czysty AS3• Zniechęca do uzywania Singleton i wszystkiego co

statyczne(sprzyja TDD oraz debugowaniu)• Zapomnij o bąbelkowaniu• Używa metadanych do dependency injection, przez co

uwalnia nas od tworzenia zbędnych zależności• Promuje luźne wiązanie • Preferuje kompozycję, nie dziedziczenie (czyli składanie

właściwości obiektu z małych klas ‘funkcyjnych’ )

Page 4: Robotlegs basics - PL

MVCS

• Model – przetrzymuje wiedzę i manipuluje stanami aplikacji

• View – to wszystko to, co widzisz i słyszysz• Controller – tłumaczy akcje użytkownika na język

stanów aplikacji, nie odpowiada czy raczej nie powinien odpowiadać za logikę samych widoków.

• Service – łączy aplikację ze światem zewnetrzym, danymi wprowadzonymi prze użytkownika, zassanymi z XML, bazy danych czy zewnętrznego API

Page 5: Robotlegs basics - PL

Jak to jest połączone, czyli jak Robotlegs załatwia sprawy

Page 6: Robotlegs basics - PL

Implementacja MVCS w Robotlegs

Page 7: Robotlegs basics - PL

Z czego Robotlegs jest zbudowany?

• Context – tu konfigurujemy aplikację : startup()• Actor – rozrzeżany przez nasze Modele i Serwisy• Mediator Map – wiąże widoki z Mediatorami• Mediator – łącznik pomiędzy widokiem a aplikacją• Eventmap - zarządza łaczęniami na linii event - słuchacz• CommandMap – łaczy Eventy z Commands• Commands – wprowadza zmiany w Modelach i

Serwisach• Injector – factory do Dependency Injection

Page 8: Robotlegs basics - PL

Context

Page 9: Robotlegs basics - PL

BootModels

Page 10: Robotlegs basics - PL

BootServices

Page 11: Robotlegs basics - PL

BootCommands

Page 12: Robotlegs basics - PL

BootViewMediators

Page 13: Robotlegs basics - PL

Actors – Model & Service

eventDispatcher jest zaszyty w klasie Actor, zatem dispatchujemy eventy z Modeli i Serwisów

dispatch(event)

Page 14: Robotlegs basics - PL

Model – zapewnia API dla danych

Page 15: Robotlegs basics - PL

Model NIE nasłuchuje eventów, on je wyłącznie

rozgłasza (dispatch).

Page 16: Robotlegs basics - PL

Service – komunikacja ze światem poza aplikacją

Śmiało może też parsować dane z zewnętrznych źródeł.W serwisach NIE PRZETRZYMUJEMY DANYCH.

Dane trzymamy w Modelach.

Page 17: Robotlegs basics - PL

Service NIE nasłuchuje eventów, on je wyłącznie

rozgłasza (dispatch).

Page 18: Robotlegs basics - PL

Mediator – łącznik pomiędzy widokiem a resztą apliakcji, listonosz

Mediator zapewnia aplikacji API do widoków, aby trzymać ją zdala od widoków.

Page 19: Robotlegs basics - PL

MediatorNasłuchuje eventów z widoku

Nasłuchuje eventów z frameworka.

Page 20: Robotlegs basics - PL

MediatorRozgłasza eventy do frameworka.

Page 21: Robotlegs basics - PL

MediatorWidoki NIE SĄ POWIĄZANE w żaden sposób z mediatorami (czy jakąkolwiek inną klasą frameworka).Widoki nie mają pojęcia o istnieniu aplikacji.

To Mediatory SĄ POWIĄZANE z widokami.

Mediatory mają dostęp bezpośredni do Serwisów i Modeli, ale (UWAGA) korzystanie z tego przywiązuje Mediator do któregoś z aktorów. Używać z ostrożnością.

Page 22: Robotlegs basics - PL

Lepiej korzystać z CommandsCommands są egzekwowane w reakcji na dispatchowany Event.Są egzekwowane i zaraz po tym niszczone.1 Command = wyłącznie jedna czynność/działanie.

Page 23: Robotlegs basics - PL

Commands

Commandy odwalają pracę na Actors - Models & ServicesCommands przechwytują dane z Eventów z którymi sa powiązane poprzez CommandMapCommands rozgłaszają też Eventy (dispatch)

Commands NIE odbierają/nasłuchują Eventów i nie wiwdzą o żadnych innych poza tym jednym z którym są powiązane (dostępny poprzez [Inject]).