Adapter to strukturalny wzorzec projektowy pozwalający na współpracę niekompatybilnych obiektów ze sobą.
Adapter pełni rolę opakowania dwóch obiektów. Przechwytuje wywołania jednego z obiektów i przekształca je na format i interfejs zrozumiały dla drugiego obiektu.
Przykłady użycia: Wzorzec Adapter jest dość powszechny w kodzie Java. Często stosowany w systemach bazujących na przestarzałym kodzie. W takich przypadkach Adapter pozwala przestarzałemu kodowi współpracować z nowoczesnymi klasami.
W głównych bibliotekach Java można znaleźć parę standardowych Adapterów:
Identyfikacja: Adapter można rozpoznać po konstruktorze przyjmującym instancję innego typu abstrakcji/interfejsu. Gdy adapter otrzymuje wywołanie kierowane do którejś z jego metod, tłumaczy parametry wywołania do stosownego formatu i przekazuje je do jednej lub wielu metod opakowanego obiektu.
Dopasowywanie kwadratowych klocków do okrągłych otworów
Poniższy prosty przykład pokazuje jak Adapter pozwala na współpracę niekompatybilnych obiektów ze sobą.
round
round/RoundHole.java: Okrągłe otwory
round/RoundPeg.java: Okrągłe klocki
square
square/SquarePeg.java: Kwadratowe klocki
adapters
adapters/SquarePegAdapter.java: Adapter klocków kwadratowych na otwory okrągłe