„Здравей, Амиго! Отново съм аз. Искам да ти дам друга гледна точка за интерфейсите. Виждаш ли, през повечето време един клас е модел на конкретен обект. За разлика от това интерфейсите са по-скоро като способности на обект or роли, а не самия обект."
Например неща като автомобor, велосипеди, мотоциклети и колела са най-добре представени като класове и обекти. Но техните способности, като „Мога да се движа“, „Мога да нося хора“ и „Мога да паркирам“, са по-добре представени като интерфейси. Вижте този пример:
Java code | Описание |
---|---|
|
Съответства на способността за движение. |
|
Съответства на способността за движение. |
|
Съответства на способността за пренасяне на товари. |
|
Клас "колело". Има способността да се движи. |
|
Клас "автомобил". Има способността да се движи, да се управлява от човек и да носи товари. |
|
Клас "скейтборд". Има способността да се движи и да се контролира от човек. |
Интерфейсите значително опростяват живота на програмиста. Програмите много често имат хиляди обекти, стотици класове и само няколко дузини интерфейси (роли). Има малко роли, но те могат да се комбинират по много начини (класове).
Целият смисъл е, че не е нужно да пишете code, дефиниращ взаимодействие с всеки друг клас. Всичко, което трябва да направите, е да взаимодействате с роли (интерфейси).
Представете си, че сте робот строител. Имате десетки подчинени роботи и всеки от тях може да има множество умения. Да предположим, че трябва спешно да завършите изграждането на стена. Просто взимате всички роботи, които имат способността да „строят“ и им казвате да построят стената. Всъщност не ви интересува кои роботи го правят. Нека да е роботизирана лейка. Ако знае How да строи, нека строи.Ето How ще изглежда в code:
Java code | Описание |
---|---|
|
Способност за „изграждане на стена“. Разбира командата «изгради стена» (има съответния метод). |
|
Роботи, които имат тази способност/умение.
Лейката не може да изгради стена (не реализира интерфейса WallBuilder). |
|
Как да дадем команда за изграждане на стена? |
„Това е невероятно интересно. Никога не съм си представял, че интерфейсите могат да бъдат толкова интересна тема.“
"И след това малко! Заедно с полиморфизма, това е напълно умопомрачително."
GO TO FULL VERSION