Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.

Podobne prezentacje


Prezentacja na temat: "Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC."— Zapis prezentacji:

1 Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.
Podejście AOP (Aspect-Oriented Programing) Tomasz Dalemba Maciej Święcicki

2 Plan wykładu: Wzorzec MVC - wprowadzenie - przykład Wzorzec IoC
- Spring Framework - przykłady AOP (Aspect–Oriented Programming) - wprowadzenie - przykład Podsumowanie

3 Wzorzec projektowy MVC - Wprowadzanie
Model danych - opis struktur danych i powiązań Model Interfejs, czyli to co widzi użytkownik View Logika działania - powiązania między zachodzącymi zdarzeniami Controller

4 Schemat przykładowej aplikacji w architekturze MVC

5 Wzorzec projektowy MVC –Wady i zalety
Łatwa zmiana interfejsu użytkownika w istniejącej aplikacji Łatwość testowania logiki biznesowej Mnogość implementacji Większa złożoność projektu Wady Zmiany w interfejsach funkcyjnych modelu pociągają za sobą zmiany w View i Controller

6 Wzorzec projektowy MVC – na przykładzie aplikacji JSF

7 Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Aplikacja będzie składać się z dwóch stron. Formularza logowania i strony umożliwiającej dodawanie bądź usuwanie książek z bazy danych. Strona posłuży do pobrania hasła i loginu

8 Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Strona dla Administratora - dodawanie książek - usuwanie książek

9 Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Strona dla Użytkownika - dodawanie książek

10 Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Kod strony widoku używający znaczników JSF. - Wiązanie zmiennych LOGIN i PASS oraz akcji CHECKING

11 Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Metoda CHECKING -Sprawdza czy użytkownik wprowadził poprawne dane. Jeśli tak zwracana jest ROLA

12 Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Kontroler - w zależności od zwróconej wcześniej wartości przez funkcję CHECKING przeniesie użytkownika na odpowiednią stronę.

13 Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Kontroler - Kod kontrolera zawierający przekierowania pokazane na poprzednim slajdzie. W przypadku framework’u JSF jest to plik XML

14 Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Kontroler - Wiązanie zmiennych #{bean.login}, #{bean.pass}, #{bean.chcecking} Zadaniem kontrolera jest powiązanie klasy Bean z pakietu jsf ze wskazanym kodem. login i pass są polami we wspomnianej klasie, natomiast checking jest wspomniana wcześniej metodą.

15 Wzorzec projektowy MVC – na przykładzie aplikacji JSF

16 Wzorzec projektowy Inversion of Controll - Wprowadzanie
Przeniesienie na zewnątrz komponentu np. obiektu odpowiedzialności za kontrolę wybranych czynności Termin często utożsamiany z wstrzykiwaniem zależności (ang. Dependency Injection, DI) Zasada Hollywood - „to nie Państwo dzwonią do nas lecz my dzwonimy do Państwa!”

17 Wzorzec projektowy Inversion of Controll – Metody implementacji
Typ 1. Obiekty implementują specjalny interfejs do wyszukiwania obiektów zależnych Typ 2. Zależności są ustawiane w obiektach za pomocą metody setter Typ 3. Zależności są ustawiane w obiektach za pomocą konstruktora

18 Wzorzec projektowy Inversion of Controll – Inne cechy
Lekki” „kontener Kontenery IoC często nazywane są „lekkimi” (ang. lightwight containers) z uwagi na ich rozmiar jak i narzut w czasie działania. Umożliwia uruchomienie kontener wewnątrz aplikacji lub innego kontenera „Black Box” Zastosowanie kontenerów jako tzn. „black box” tj. odseparowanie warstwy biznesowej od warstwy prezentacji w obrębie jednej maszyny wirtualnej

19 Wzorzec projektowy Inversion of Controll – Inne cechy

20 Wzorzec projektowy Inversion of Controll – Spring Framework 1/7
Uproszczenie aplikacji J2EE – eliminacja "martwego kodu" sklejającego poszczególne komponenty, – dostarczenie wydajnych mechanizmów IoC i AOP. Luźne wiązanie aplikacji ze szkieletem – kod aplikacji praktycznie uniezależniony od Spring API, – promowanie dobrych praktyk programowania obiektowego, – przekazanie logiki do POJO.

21 Wzorzec projektowy Inversion of Controll – Spring Framework 2/7
„Święta wojna” z encyjnymi komponentami EJB - Odpowiedź na trudności w implementacji komponentów encyjnych EJB Ułatwienie procesu testowania aplikacji – tworzenie aplikacji w oparciu o testy (TDD, test-driven development), – umożliwienie testowania obiektów biznesowych poza kontenerem.

22 Wzorzec projektowy Inversion of Controll – Spring Framework 3/7
Schemat architektury SPRING

23 Wzorzec projektowy Inversion of Controll – Spring Framework 4/7
Wsparcie dla istniejących technologii (Hibernate,SOAP,JMX,JMS, języki skryptowe,JSP/Servlet) Wsparcie dla AOP Możliwość pisania testów (Junit,TestNG) Wsparcie dla “annotations” Wsparcie dla modułów i hierarchia kontenerów Inne jęzki programowania i IoC

24 Wzorzec projektowy Inversion of Controll – Spring Framework 5/7
Wielowarstwowy szkielet aplikacji Java/J2EE zawierający: – lekki kontener umożliwiający scentralizowane zarządzanie i łączenie komponentów JavaBean i POJO, – warstwę zarządzania transakcjami, – warstwę obsługi JDBC wraz z hierarchią wyjątków, – moduły umożliwiające integrację z Toplink, Hibernate, JDO i iBATIS SQL Maps za pomocą standardowych DAO, – pełnowartościowe środowisko obsługujące paradygmat programowania aspektowego AOP, – elastyczne środowisko do tworzenia aplikacji internetowych zgodnie z modelem MVC umożliwiające integrację ze Struts, WebWork, Tapestry; Spring MVC wspiera także wiele technologii implementowania warstwy widoku, np. JSP, Velocity, Tiles.

25 Wzorzec projektowy Inversion of Controll – Spring Framework 6/7
Kontener Podstawowa część architektury, głównym składnikiem jest BeanFactory zapewniająca mechanizm IoC (Inversion of Control) Spring context Plik konfiguracyjny dostarczający opis środowiska: JNDI, EJB,wielojęzyczność, walidacja, itp. Spring AOP Moduł implementujący mechanizm AOP (Aspect-Oriented Programming) i zapewniający transakcyjność przetwarzania

26 Wzorzec projektowy Inversion of Controll – Spring Framework 7/7
Spring DAO Hierarchia wyjątków ujednolicająca kody błędów różnych baz danych Spring ORM Szablony ułatwiające korzystanie z narzędzi ORM Spring Web Integracja z Jakarta Struts i dostarczanie kontekstu aplikacjom webowym Spring Web Implementacja MVC obsługująca szeroką gamę technologii

27 Wzorzec projektowy Inversion of Controll – Przykład 1/2

28 Wzorzec projektowy Inversion of Controll – Przykład 2/2

29 Wzorzec projektowy IoC – przykłady implementacyjne

30 Wzorzec projektowy IoC – przykłady implementacyjne - Spring
Wykorzystanie Spring - Kod na kolejnym slajdzie prezentuje wykorzystanie wzorca IoC poprzez Spring IoC - Spring nie ogranicza się jednak tylko do IoC. Służy również często jako integrator wielu różnych bibliotek. Mamy tutaj pokazaną konfigurację źródła danych. - Źródło to jest następnie przekazywane do „integratora” napisanego dla biblioteki iBatis zajmującej się mapowaniem wyników zwróconych z bazy danych na klasy Javy. Na koniec integrator zostaje przekazany do fasady (ang. Facade) , która będzie udostępniać odpowiednie metody biznesowe operujące na bazie danych

31 Wzorzec projektowy IoC – przykłady implementacyjne - Spring

32 Wzorzec projektowy IoC – przykłady implementacyjne – Spring + JSF
Integracja Spring IoC z kontrolerem JSF - #{facade}

33 Wzorzec projektowy IoC – przykłady implementacyjne - JEE
Wykorzystanie IoC w JEE - Adnotacje (Java 5.0) zamiast plików XML - Wymagany serwer aplikacja wspierający JEE 5.0 z kontenerem wspierającym servlety w wersji nie niższej niż 2.5

34 Wzorzec projektowy IoC – przykłady implementacyjne - JEE
Wykorzystanie IoC w JEE - Jest to zwykły bean Javy. Różni się od innych tym, że ma specjalne informacje dla serwera aplikacyjnego. Chodzi o Dodatkowo jak widzimy musi implementować interfejs przedstawiony na poprzednim slajdzie.

35 Wzorzec projektowy IoC – przykłady implementacyjne - JEE
Wykorzystanie IoC w JEE - Jest to zwykły bean Javy. Różni się od innych tym, że ma specjalne informacje dla serwera aplikacyjnego. Chodzi o Dodatkowo jak widzimy musi implementować interfejs przedstawiony na poprzednim slajdzie. - Serwer zarejestruje sobie pod nazwą „Pierwszy” tą implementację, którą będzie udostępniał później innym obiektom Javy.

36 Wzorzec projektowy IoC – przykłady implementacyjne - JEE
Wykorzystanie IoC w JEE - Tutaj mamy kod jaki należy dodać do np.: dowolnego „javovego” servletu lub beana JSF, aby móc korzystać ze zdefiniowanej przez nas fasady, która udostępnia metody operujące na bazie danych. - Serwer widząc szuka odpowiedniej implementacji interfejsu, bierze dodatkowo pod uwagę nazwę jaką wprowadziliśmy. W przypadku EJB 3.0 nie jest ona konieczna. Używa się jej tylko wówczas gdy mamy różne bean’y implementujące ten sam interfejs.

37 Podejście AOP (Aspect-Oriented Programing)
Metoda programowania mająca na celu modularyzację kodu i likwidację nakładających się problemów przekrojowych Aspekt Nazwany problem przekrojowy Rada Dodatkowe zachowanie/czynność które zostaje zainicjowane w punkcie złączenia Miejsce w strukturze wykonywania się aplikacji w którym powinna zostać zastosowana rada Punkt złączenia

38 Podejście AOP (Aspect-Oriented Programing) – rodzaje rad
Around advice Przed i po punkcie styku, możliwość przerwania przepływu kontroli przez zwrócenie własnej wartości lub wyjątku Before advice przed punktem styku, brak blokowania przepływu kontroli Throws advice W momencie zgłoszenia wyjątku Po poprawnym wykonaniu After advice

39 Podejście AOP (Aspect-Oriented Programing) – schemat
Programowanie aspektowe

40 Podejście AOP (Aspect-Oriented Programing) – Przykład EJB 3.0 1/2
import java.util.logging.Logger; import javax.interceptor.AroundInvoke; import javax.interceptor.InvocationContext; public class TracingInterceptor { Logger logger = Logger.getLogger(TracingInterceptor.class.toString()); @AroundInvoke public Object trace(InvocationContext ctx) throws Exception { logger.info("Wykonuje metode biznesowa " + ctx.getTarget().getClass().getSimpleName() + "." + ctx.getMethod().getName()); return ctx.proceed(); } }

41 Podejście AOP (Aspect-Oriented Programing) – Przykład EJB 3.0 2/2
import java.util.logging.Logger; import javax.ejb.Stateless; import javax.interceptor.Interceptors; import pl.jaceklaskowski.ejbws.interceptors.TracingInterceptor; public class MojPierwszyWsEJBBean implements MojPierwszyWsEJBLocal { Logger logger = Logger.getLogger(MojPierwszyWsEJBBean.class.toString()); public void metodaBiznesowa() { logger.info("Metoda biznesowa metodaBiznesowa wywolana poprawnie"); } } Wykonuje metode biznesow MojPierwszyWsEJBBean.metodaBiznesowa Metoda biznesowa metodaBiznesowa wywolana poprawnie

42 Dziękujemy za uwagę


Pobierz ppt "Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC."

Podobne prezentacje


Reklamy Google