Dzisiejszy wpis będzie poświęcony tematyce inżynierii oprogramowania – zostanie opisany wzorzec projektowy Adapter. Zostanie wytłumaczone na czym on polega oraz przedstawione będzie jego zastosowanie w kontekście integracji z systemami ERP.
Adapter – co to jest?
Wzorzec Adapter jest to strukturalny wzorzec projektowy, znany jest również pod nazwą Wrapper (z ang. Opakowanie). Adapter powinien być używany w przypadku, gdy wykorzystanie istniejącej klasy jest niemożliwe ze względu na jej niekompatybilny interfejs. Innymi słowy służy do „opakowania” klas bądź bibliotek w taki sposób, aby zagwarantować jak największą uniwersalność w całym tworzonym systemie.
Adapter – jak go wykorzystać?
Zwykle adapter jest wykorzystywany w przypadku gdy korzystamy z jakiejś zewnętrznej biblioteki, której użycie jest problematyczne, np. metody zwracają typy które nie są zgodne z modelem aplikacji. Adapter idealnie wtedy nadaje się do opakowania takich metod aby zwracały typy zgodne z modelem. W integracji z systemami ERP używanie wzorca Adapter jest wręcz konieczne. Sposób w jaki jest to realizowane został przedstawiony na Rysunku1. Zazwyczaj korzystamy z gotowych bibliotek firm zewnętrznych, które udostępniają je wraz ze swoim systemem ERP. Aby ustandaryzować używanie tych bibliotek konieczne jest zastosowanie Adaptera. Tworząc ogólny interfejs udostępniający wymagane do integracji funkcje, np. pobieranie listy produktów, implementujemy go z wykorzystaniem metod udostępnionych przez zewnętrzną bibliotekę. Metody te zwracają dane w swoich zdefiniowanych typach, należy więc użyć ich w taki sposób aby utworzyć obiekty klasy jakie chcemy otrzymać (zdefiniowane w interfejsie). Następnie już tylko wywołujemy metody które udostępnia interfejs. Dzięki takiemu podejściu zagwarantowana jest duża skalowalność – mamy jeden ogólny interfejs który może być implementowany na wiele różnych sposobów w zależności od biblioteki – jeśli pojawia się nowy system ERP do integracji, wystarczy zaimplementować interfejs i w odpowiedni sposób opakować funkcjonalności biblioteki.
Podsumowanie
Na koniec kilka słów podsumowania. Adapter nadaje się wszędzie tam, gdzie wykorzystywane są zewnętrze biblioteki. Praktycznie zawsze w takiej sytuacji należy go użyć. Sama implementacja wzorca nie jest skomplikowana, po prostu tworzymy interfejs, który ma udostępniać funkcjonalność taką jaką my chcemy mieć. To w jaki sposób ją uzyskać z innych klas należy określić w implementacji tego interfejsu.
Autorem tekstu jest Mateusz Łysień.