Robotlegs basics - PL

Post on 28-Jun-2015

781 views 0 download

Transcript of Robotlegs basics - PL

Robotlegs AS3 lightweight framework

(1100 linii kodu)

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

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’ )

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

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

Implementacja MVCS w Robotlegs

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

Context

BootModels

BootServices

BootCommands

BootViewMediators

Actors – Model & Service

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

dispatch(event)

Model – zapewnia API dla danych

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

rozgłasza (dispatch).

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.

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

rozgłasza (dispatch).

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

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

MediatorNasłuchuje eventów z widoku

Nasłuchuje eventów z frameworka.

MediatorRozgłasza eventy do frameworka.

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ą.

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.

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]).