Abstrakcja (abstraction) to zasada projektowania polegająca na skupieniu się na tym, co obiekt robi, a nie jak to robi. Wyodrębnia istotne cechy i ukrywa szczegóły, dzięki czemu użytkownik klasy lub funkcji nie musi znać jej wnętrza, by z niej korzystać.
Abstrakcja w kodzie
Wyraża się ją przez interfejsy i klasy abstrakcyjne. Interfejs Magazyn z metodami zapisz() i odczytaj() nie mówi, czy dane lądują na dysku, w bazie czy w chmurze. Klienci zależą od ogólnego kontraktu, a nie od szczegółów.
Abstrakcja a hermetyzacja
Hermetyzacja ukrywa dane i wnętrze obiektu, a abstrakcja upraszcza sposób myślenia o nim, pokazując tylko to, co istotne. Obie idą w parze: ukryte szczegóły umożliwiają prosty interfejs.
Granice abstrakcji
Zbyt wczesne lub nadmierne abstrahowanie prowadzi do warstw, które niczego nie upraszczają. Dobra abstrakcja jest wynikiem zrozumienia problemu, a nie zgadywania przyszłych potrzeb.
Przykład: abstrakcja płatności
Sklep może zdefiniować interfejs BramkaPlatnosci z metodą zaplac(). Kod zamówień wywołuje tylko ten interfejs, a konkretne klasy obsługują różne operatory płatności. Dodanie nowej bramki nie zmienia logiki zamówień. Jednocześnie sam interfejs powinien opisywać potrzeby sklepu, a nie kopiować API jednego dostawcy, bo wtedy abstrakcja nie chroni przed zmianą.
Powiązane pojęcia
Wszystkie hasła z kategorii Programowanie i wzorce projektowe