Programowanie oparte na interfejsie
Programowanie oparte na interfejsie , znane również jako architektura oparta na interfejsie , to wzorzec architektoniczny służący do wdrażania programowania modułowego na poziomie komponentów w obiektowym języku programowania, który nie ma systemu modułów. Przykładem takiego języka jest Java , która (od 2015 roku) nie posiada systemu modułowego na poziomie komponentów. Java ma pakietów , ale komponenty oprogramowania Java zwykle składają się z wielu pakietów Java – w każdym przypadku programowanie interfejsów może zapewnić przewagę nad zwykłymi pakietami Java, nawet jeśli komponent składa się tylko z jednego pakietu Java.
Programowanie oparte na interfejsie definiuje aplikację jako zbiór komponentów, w którym wywołania interfejsu programowania aplikacji (API) między komponentami mogą być wykonywane tylko za pośrednictwem abstrakcyjnych interfejsów, a nie konkretnych klas. Instancje klas będą generalnie uzyskiwane za pośrednictwem innych interfejsów przy użyciu technik, takich jak wzorzec Factory .
Uważa się, że zwiększa to modułowość aplikacji, a tym samym jej łatwość konserwacji . Jednak pewna ostrożność jest uzasadniona — samo podzielenie aplikacji na dowolne komponenty komunikujące się za pośrednictwem interfejsów samo w sobie nie gwarantuje niskiego sprzężenia ani wysokiej spójności , dwóch innych atrybutów, które są powszechnie uważane za kluczowe dla łatwości konserwacji.
Architekturę opartą na interfejsie można wykorzystać, gdy osoby trzecie – lub w rzeczywistości oddzielne zespoły w ramach tej samej organizacji – opracowują dodatkowe komponenty lub wtyczki do istniejącego systemu. Baza kodu środowiska Eclipse IDE jest przykładem programowania opartego na interfejsie. Dostawcy wtyczek Eclipse muszą jedynie opracować komponenty zgodne z interfejsem określonym przez nadrzędnego dostawcę aplikacji, Fundację Eclipse. Rzeczywiście, w Eclipse nawet oryginalne komponenty, takie jak Java Development Tools, same są wtyczkami. To trochę jak z telefonem komórkowym producent określa interfejs ładowarki do telefonów komórkowych (układ styków, oczekiwane napięcie prądu stałego itp.), a zarówno producent, jak i osoby trzecie wytwarzają własne ładowarki do telefonów komórkowych, które są zgodne z tą standardową specyfikacją interfejsu.
Ewolucja oprogramowania w programowaniu interfejsowym
Korzystanie z interfejsów w celu umożliwienia współpracy różnym zespołom rodzi pytanie, w jaki sposób zachodzą zmiany interfejsu w programowaniu opartym na interfejsie. Problem polega na tym, że jeśli interfejs zostanie zmieniony, np. poprzez dodanie nowej metody, stary kod napisany w celu implementacji interfejsu nie będzie się już kompilował – a w przypadku wtyczek ładowanych dynamicznie lub połączonych albo nie będzie się ładować lub linkować, albo awaria w czasie wykonywania. Istnieją dwa podstawowe podejścia do rozwiązania tego problemu:
- nowy interfejs może zostać opracowany z dodatkowymi funkcjami, które mogą dziedziczyć po starym interfejsie
- zasady wersjonowania oprogramowania, takie jak semantyczne wersjonowanie 2.0, mogą być przekazywane realizatorom interfejsów, aby umożliwić niekompatybilne w przód, a nawet niekompatybilne wstecz zmiany w przyszłych „głównych” wersjach platformy
Oba te podejścia zostały wykorzystane w platformie Java.
Projekt na podstawie umowy
Wydawca interfejsów generalnie obiecuje, że nie będzie zmieniał interfejsu w nowych „podrzędnych” wersjach oprogramowania, a realizator, wdrażając interfejs, daje do zrozumienia, że zaimplementował przynajmniej wymagane części interfejsu bez żadnych odchyleń. Interfejs może być zatem postrzegany jako „umowa umowna” – między dostawcą a konsumentem interfejsu. Jeśli ta umowa jest bardziej formalnie udokumentowana jako specyfikacja oprogramowania, jest to przykład projektowania według umowy . Jednak projektowanie na podstawie umowy samo w sobie nie wymaga stosowania interfejsów dla wszystkich komponentów.
Zobacz też
- Mikroserwisy
- Wzór aktora
- CORBA , starszy system oparty na komponentach dla oprogramowania zorientowanego obiektowo, który jest obecnie rzadko używany z różnych powodów
- Programowanie oparte na interfejsie C# , c-sharpcorner.com
- Programowanie oparte na interfejsie — ujednolicony język modelowania (UML) , devmentor.org
- Tworzenie architektury dużej aplikacji z architekturą opartą na interfejsie , rhyous.com, 18 października 2011 r
- Zrozumienie programowania opartego na interfejsie , Microsoft Developers Network , dostęp 16 września 2016 r