Użyj adaptera, jeśli masz interfejs, którego nie możesz zmienić, ale którego musisz użyć. Zobacz, jak jesteś nowym facetem w biurze i nie możesz zmusić siwych włosów do przestrzegania twoich zasad - musisz się do nich dostosować. Oto prawdziwy przykład z prawdziwego projektu, nad którym kiedyś pracowałem, w którym interfejs użytkownika jest podany.
Masz aplikację, która wczytuje wszystkie wiersze w pliku do struktury danych List i wyświetla je w siatce (nazwijmy bazowy interfejs magazynu danych IDataStore). Użytkownik może poruszać się po tych danych, klikając przyciski „Pierwsza strona”, „Poprzednia strona”, „Następna strona”, „Ostatnia strona”. Wszystko dziala.
Teraz aplikacja musi być używana z dziennikami produkcyjnymi, które są zbyt duże, aby wczytać je do pamięci, ale użytkownik nadal musi się po nich poruszać! Jednym z rozwiązań byłoby zaimplementowanie pamięci podręcznej przechowującej pierwszą stronę, następną, poprzednią i ostatnią stronę. Chcemy, aby kiedy użytkownik kliknął „Następna strona”, zwracamy stronę z pamięci podręcznej i aktualizujemy pamięć podręczną; kiedy klikną ostatnią stronę, zwracamy ostatnią stronę z pamięci podręcznej. W tle mamy strumień plików, który robi całą magię. W ten sposób mamy w pamięci tylko cztery strony, a nie cały plik.
Możesz użyć adaptera, aby dodać tę nową funkcję pamięci podręcznej do aplikacji bez zauważenia tego przez użytkownika. Rozszerzamy obecny IDataStore i nazywamy go CacheDataStore. Jeśli plik do załadowania jest duży, używamy CacheDataStore. Kiedy wysyłamy żądanie dotyczące pierwszej, następnej, poprzedniej i ostatniej strony, informacje są kierowane do naszej pamięci podręcznej.
A kto wie, jutro szef chce zacząć czytać pliki z tabeli bazy danych. Wszystko, co musisz zrobić, to nadal rozszerzać IDataStore do SQLDataStore, tak jak w przypadku Cache, konfigurując połączenie w tle. Kiedy klikną Next page, wygenerujesz niezbędne zapytanie sql, aby pobrać następne kilkaset wierszy z bazy danych.
Zasadniczo oryginalny interfejs aplikacji nie uległ zmianie. Po prostu dostosowaliśmy nowoczesne i fajne funkcje, aby działały, zachowując stary interfejs.