Przykładowa implementacja



Podobne dokumenty
Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce projektowe. dr inż. Marcin Pietroo

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Wzorce logiki dziedziny

Wzorce projektowe. Wstęp

Programowanie obiektowe

PHP 5 język obiektowy

Wzorce projektowe w aplikacjach webowych

Wzorce dystrybucji i wspólbieżności autonomicznej

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Dokumentacja techniczna API systemu SimPay.pl

Builder (budowniczy) Cel: Przykład:

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Abstract Factory (fabryka abstrakcyjna)

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

Modelowanie obiektowe

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Programowanie obiektowe

Programowanie zorientowane obiektowo. Mateusz Kołecki

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.


Wzorce projektowe. dr inż. Marcin Pietroo

Wprowadzenie do programowania aplikacji mobilnych

Aplikacje RMI Lab4

Podstawy programowania III WYKŁAD 6

Programowanie obiektowe

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

Podstawy programowania III

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

MVC w praktyce tworzymy system artykułów. cz. 1

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Remote Method Invocation 17 listopada 2010

Aplikacje RMI

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Wzorce projektowe. dr inż. Marcin Pietroo

Technologie obiektowe

Zaawansowane programowanie w C++ (PCP)

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Systemy Rozproszone - Ćwiczenie 6

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Technologia Programowania 2016/2017 Wykład 4

Dokumentacja do API Javy.

Forum Client - Spring in Swing

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Płatności CashBill dla QuickCart

Wspólna propozycja w ramach porozumienia z dnia

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Projektowanie obiektowe Wzorce projektowe

Programowanie obiektowe

Podręcznik Integracji

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Laboratorium 8 Diagramy aktywności

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Enkapsulacja, dziedziczenie, polimorfizm

Kurs WWW. Paweł Rajba.

Diagramy klas. dr Jarosław Skaruz

Programowanie obiektowe

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

problem w określonym kontekście siły istotę jego rozwiązania

Programowanie obiektowe

Wskaźniki do funkcji i metod

Projektowanie Aplikacji Internetowych Jarosław Kuchta. Wzorce projektowe warstwy biznesowej

Programowanie komponentowe 5

10. Programowanie obiektowe w PHP5

OSGi Agata Hejmej

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia.

Podstawy programowania III WYKŁAD 4

Dokumentacja API. wersja 1.1

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Shoper (plugin dostępny w wersji ecommerce)

Testowanie i wdrażanie oprogramowania Emulator systemu bankowego

Programowanie Komponentowe WebAPI

emszmal 3: Automatyczne księgowanie przelewów w menadżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

Wzorce prezentacji internetowych

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład XII

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016

Tworzenie i wykorzystanie usług sieciowych

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym IAI-Shop (plugin dostępny w wersji ecommerce)

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento 2 (plugin dostępny w wersji ecommerce)

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Transkrypt:

Wzorce projektowe, cz. 10 Facade Fasada służy do ujednolicenia dostępu do złożonego systemu poprzez udostępnienie uproszczonego i uporządkowanego interfejsu programistycznego. Fasada zwykle implementowana jest w bardzo prosty sposób - w postaci jednej klasy powiązanej z klasami reprezentującymi system, do którego klient chce uzyskać dostęp. Przykładowa implementacja <?php Diagram klas wzorca Facade class Element1{ public function method() { echo "metoda klasy Element1"; class Element2{ public function method() { echo "metoda klasy Element2"; 1/6

class Element3{ public function method() { echo "metoda klasy Element3"; class Facade{ private $objects = array(); public function construct() { $this->objects[0] = new Element1(); $this->objects[1] = new Element2(); $this->objects[2] = new Element3(); public function method1() { $this->objects[0]->method(); public function method2() { $this->objects[1]->method(); public function method3() { $this->objects[2]->method(); public function apielement1() { return $this->objects[0]; 2/6

// testy $api = new Facade(); $api->method1(); // wyswietli "metoda klasy Element1" $api->method2(); // wyswietli "metoda klasy Element2" $api->method3(); // wyswietli "metoda klasy Element3" var_dump($api->apielement1());?> Klasa Facade zawiera obiekty klas, które stanowią elementy systemu. Wywołując metodę (method1(), method2(), method3()) tej klasy, tak naprawdę wywołujemy metody poszczególnych obiektów składowych systemu. Metoda apielement1() jest pewnym rozszerzeniem fasady, która zwraca cały obiekt klasy Elemnt1 rozwiązanie takie zezwala w łatwy sposób udostępniać całą bibliotekę wymaganą w specyficznych sytuacjach. Przykład z życia wzięty Mamy za zadanie stworzyć sklep internetowy, który ma umożliwić łatwą integrację z innymi serwisami. Do realizacji tego zadania musimy stworzyć API udostępniane partnerom. Najłatwiej użyć do tego wzorca fasady. <?php class User{ public function login() { echo "Logowanie do systemu\n"; public function register() { echo "Rejestracja\n"; class Cart{ public function getitems() { echo "Zawartość koszyka\n"; 3/6

class Product{ public function getall() { echo "Lista produktów\n"; public function get($id) { echo "Produkt o ID ".$id."\n"; class API{ private $user; private $cart; private $product; public function construct() { $this->user = new User(); $this->cart = new Cart(); $this->product = new Product(); public function login() { $this->user->login(); public function register() { $this->user->register(); public function getbuyproducts() { $this->cart->getitems(); 4/6

public function getproducts() { $this->product->getall(); public function getproduct($id) { $this->product->get($id); // testy $client = new API(); $client->register(); $client->login(); $client->getproducts(); $client->getproduct(5); $client->getbuyproducts();?> Prawda, że dużo łatwiej korzystać z API niż odwoływać się bezpośrednio do składowych systemu? ;) Nie wspominając o kwestiach bezpieczeństwa... Zalety i wady Zalety: Wady: Zmniejszenie liczby zależności między klientem, a złożonym systemem jeśli klient nie korzysta bezpośrednio z żadnych elementów ukrytego za fasadą systemu, całość jest łatwiejsza w konserwacji i utrzymaniu. Wprowadzenie podziału aplikacji na warstwy, który ułatwia niezależny rozwój elementów klienta i złożonego systemu. Możliwość zablokowania klientowi drogi do bezpośredniego korzystania ze złożonego systemu, jeśli jest to konieczne. Są jakieś? ;) 5/6

Zastosowanie Przykładem użycia wzorca fasady może być zbudowanie API, które zezwoli zewnętrznym serwisom i aplikacjom łączyć się w prosty sposób z naszą aplikacją. Innym praktycznym przykładem jest system bankowy. Logując się na internetowe konto mamy dostęp tylko do pojedynczych składowych całego systemu (autoryzacja, przelewy, saldo konta itp). 6/6