Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Łukasz Socha, dodany: 05.08.2012 21:59, tagi: php

pobierz w .pdf(przeznaczone do wydruku)

Wzorzec adapter (znany także pod nazwą wrapper) służy do przystosowania interfejsów obiektowych, tak aby możliwa była współpraca obiektów o niezgodnych interfejsach. Szczególnie przydaje się przypadku wykorzystania gotowych bibliotek o interfejsach niezgodnych ze stosowanymi w aplikacji. W świecie rzeczywistym adapter to przejściówka, np. przejściówka do wtyczki gniazdka angielskiego na polskie.

Diagram klas wzorca Adapter

Struktura wzorca składa się z elementów takich jak: Target, Adaptee, Adapter oraz Client. Target jest abstrakcją (zazwyczaj interfejsem), jakiej oczekuje klient. Elementem dostarczającym żądanej przez klienta funkcjonalności jest Adaptee (np. zewnętrzną biblioteką). Rolą adaptera, który implementuje interfejs Target, jest „przetłumaczenie” wywołania metod należących do interfejsu Target poprzez wykonanie innych, specyficznych metod z klasy Adaptee.

Przykładowa implementacja

<?php 
interface Target {
    public function  methodA();
}
class Adaptee {
    public function methodB() {
        echo "Metoda B";
    }
}
class Adapter implements Target {
    public function methodA() {
        $adaptee = new Adaptee();
        $adaptee->methodB();
    }
}

//test
$client = new Adapter();
$client->methodA(); // wyswietli "metoda B"
?>

Przykład z życia wzięty

Przejmujemy administrację nad jakimś większym projektem i istnieje potrzeba wymiany starej biblioteki XML na nową. Oczywiście nazwy metod różnią się diametralnie. Zamiast poprawiać nazwy metod w całym projekcie możemy napisać adapter.

<?php 
interface OldXML {
    public function  writeXml();
}
class NewXML {
    public function xml() {
        echo "Kod XML";
    }
}
class XML implements OldXML {
    public function writeXml() {
        $adaptee = new NewXML();
        $adaptee->xml();
    }
}

//test
$client = new XML();
$client->writeXml(); // wyswietli "Kod XML"
?>

Interfejs OldXML zawiera zestaw metod starej biblioteki. NewXML jest klasą nowej biblioteki. Natomiasr klasa XML jest swoistą przejściówką pomiędzy dwoma wersjami klas.

Zastosowanie

Wzorzec adaptera stosowany jest najczęściej w przypadku, gdy wykorzystanie istniejącej klasy jest niemożliwe ze względu na jej niekompatybilny interfejs. Drugim powodem użycia może być chęć stworzenia klasy, która będzie współpracowała z klasami o nieokreślonych interfejsach.

Powiązane tematy

Autor wpisu: bastard13, dodany: 02.08.2012 15:18, tagi: design, oop

na początek

Na początku był kod. Kod, który się rozrastał, żył, ewoluował, a pracę nad nim wykonywało programistów wielu. I kod ten spełniał swoje zadanie. I nigdy nie dotknął go zbędny proces refaktoryzacji, co pozwoliło, że rozmiary jego były naprawdę okazałe, jego możliwości - mnogie, a czytelność - żadna."Na szczęście", w trakcie pracy nad kodem, wielu programistów, którzy mieli z nim do czynienia, otaczali kolejne linijki instrukcji, pokaźną ilością komentarzy, które miały na celu przekazać przyszłym pokoleniom tajemnice zawarte w kodzie i uzmysłowić jego działanie. Czytaj więcej »

Autor wpisu: batman, dodany: 01.08.2012 08:00, tagi: jquery, javascript

gridster.js to plugin jQuery, dzięki któremu będziemy w stanie stworzyć kolekcję elementów w postaci grida, gdzie każdy element można przeciągnąć w dowolne miejsce. Plugin sam zadba o odpowiednie dopasowanie otaczających elementów. Do czego to się może przydać? Na przykład do (…)

Read the rest of this entry »

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.