Luźne sprzęgło a ciasne sprzęganie w Javie: różnica między luźnym sprzęgiem a ciasnym sprzęgiem
Opublikowany: 2021-05-02Spis treści
Wstęp
Java to obiektowy język programowania, który wykorzystuje klasy i obiekty. Sprzęganie odgrywa istotną rolę w Javie, jeśli pracujesz z klasami i obiektami w języku Java. Sprzężenie odnosi się do stopnia wiedzy jednego elementu w Javie o drugim elemencie. Jest to stopień wykorzystania jednej klasy przez inną klasę. Ten artykuł pozwoli ci dogłębnie zrozumieć sprzęganie w Javie , jego rodzaje wraz z przykładami.
Co to jest sprzęganie w Javie?
Sprzężenie to nic innego jak zależność jednej klasy od drugiej. Jeśli jeden obiekt w kodzie używa innego obiektu w programie, w Javie nazywa się to luźnym sprzężeniem . W połączeniu dwie klasy lub obiekty współpracują i współpracują ze sobą, aby wykonać wstępnie zdefiniowane zadanie. Oznacza to po prostu, że jeden element wymaga innego elementu do wykonania funkcji. Nazywa się to współpracą, gdy jedna klasa wywołuje logikę drugiej klasy.
Jakie są rodzaje sprzężenia?
Sprzęganie w Javie jest dwojakiego rodzaju.
Luźne sprzężenie w Javie
Kiedy dwie klasy, moduły lub komponenty są od siebie w niewielkim stopniu zależne, w Javie nazywa się to luźnym sprzężeniem . Luźne sprzężenie w Javie oznacza, że klasy są od siebie niezależne. Jedyną wiedzą, jaką jedna klasa posiada na temat drugiej, jest to, co druga klasa ujawniła poprzez swoje interfejsy w luźnym połączeniu. Jeśli sytuacja wymaga użycia obiektów z zewnątrz, określa się ją jako sytuację luźnego sprzężenia .
Tutaj obiekt nadrzędny rzadko korzysta z obiektu, a obiekt można łatwo zmienić ze źródeł zewnętrznych. Luźne sprzężenie w Javie ma przewagę nad ścisłym sprzężeniem, ponieważ zmniejsza konserwację kodu i wysiłek. Zmiana w jednej klasie nie wymaga zmian w drugiej, a dwie klasy mogą działać niezależnie.
Przykład 1: Wyobraź sobie, że utworzyłeś w swoim programie dwie klasy, A i B. Klasa A nazywana jest objętością, a klasa B ocenia objętość cylindra. Jeśli zmienisz wolumin klasy A, nie będziesz zmuszony do zmiany klasy B. W Javie nazywa się to luźnym sprzężeniem . Kiedy klasa A wymaga zmian w klasie B, masz ciasne sprzężenie.
Kod
luźne łączenie paczek; klasa Objętość { public static void main(String args[]) { Cylinder b = nowy cylinder (25, 25, 25); System.out.println(b.getVolume()); } } klasa końcowa Cylinder { prywatna objętość int; Cylinder(długość wewnętrzna, szerokość wewnętrzna, wysokość wewnętrzna) { this.volume = długość * szerokość * wysokość; } public int getVolume() { objętość powrotu; } } |
Objaśnienie: W powyższym przykładzie klasa A i klasa B są luźno powiązane.
Przykład 2
import java.io.IOException; interfejs Jedzenie { public void display(); } klasa włoskiego { Żywność; publiczne włoskie (jedzenie){ to.s = s; } public void display(){ System.out.println(„włoski”); s.display(); } } klasa chińskie wdraża Jedzenie { publiczny chiński(){} public void display(){ System.out.println(„chiński”); } } klasa meksykańska wdraża Jedzenie { publiczne meksykańskie(){} public void display(){ System.out.println("meksykański"); } } Test klasy publicznej { public static void main(String args[]) wyrzuca IOException { Jedzenie b = nowy chiński(); Jedzenie c = nowy Meksykanin(); włoski a = nowy włoski(b); //a.display() wypisze włoski i chiński wyświetlacz(); włoski a1 = nowy włoski(c); //a.display() wypisze włoski i meksykański a1.display(); } } |
Wyjście
Włoski chiński Włoski Meksykańska |
Objaśnienie: W powyższym przykładzie wszystkie trzy klasy są luźno powiązane. Oznacza to po prostu, że możesz użyć interfejsu food do świadczenia usług poprzez wstrzyknięcie dowolnej z zaimplementowanych usług.
Zdobądź dyplomy z inżynierii oprogramowania online na najlepszych światowych uniwersytetach. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Ciasne sprzęgło
Kiedy dwie klasy są od siebie wysoce zależne, nazywa się to ścisłym sprzężeniem. Dzieje się tak, gdy klasa przyjmuje zbyt wiele obowiązków lub gdy zmiana w jednej klasie wymaga zmian w drugiej. W ścisłym sprzężeniu obiekt (obiekt nadrzędny) tworzy inny obiekt (obiekt podrzędny) do użytku. Jeśli obiekt nadrzędny wie więcej o tym, jak został zaimplementowany obiekt potomny, możemy powiedzieć, że obiekt nadrzędny i potomny są ściśle powiązane.
Przykład: Wyobraź sobie, że utworzyłeś w swoim programie dwie klasy A i B. Klasa A nazywana jest objętością, a klasa B ocenia objętość cylindra. Jeśli dokonasz jakichkolwiek zmian w wolumenie, te same zmiany zostaną odzwierciedlone w klasie B. Można więc powiedzieć, że obie klasy są od siebie wysoce zależne i ściśle powiązane.
Kod
szczelne połączenie opakowania; klasa Objętość { public static void main(String args[]) { Cylinder b = nowy cylinder (15, 15, 15); System.out.println(b.volume); }} klasa Cylinder { publiczna objętość int; Cylinder(długość wewnętrzna, szerokość wewnętrzna, wysokość wewnętrzna) { this.volume = długość * szerokość * wysokość; }} |
Wyjście
3375 |
Wyjaśnienie: W powyższym przykładzie klasa A i klasa B są ze sobą powiązane i współpracują ze sobą jako zespół.
Różnice między luźnym i ścisłym sprzężeniem
W poniższej tabeli wymieniono różnice między luźnym a ciasnym złączem.
Luźne powiązanie | Ciasne sprzęgło |
Obiekty są od siebie niezależne. | Jeden obiekt jest zależny od drugiego obiektu, aby wykonać zadanie. |
Lepsza testowalność | Testowalność nie jest tak dobra, jak luźne sprzężenie w Javie . |
Komunikacja asynchroniczna | Komunikacja synchroniczna |
Mniej koordynacji. Zamiana kodu między dwiema klasami nie jest łatwa. | Zapewnia lepszą koordynację. Możesz łatwo zamienić kod między dwoma obiektami. |
Brak koncepcji interfejsu | Zgodność z zasadami GOF w interfejsie |
Mniejszy przepływ informacji | Więcej informacji o przepływie |
Wysoce zmienny | Nie ma możliwości zmiany. |
Wniosek
Krótko mówiąc, luźne połączenie w Javie jest znacznie lepsze w porównaniu z ciasnym połączeniem. Zapewnia większą elastyczność i możliwość ponownego wykorzystania kodu. Ponieważ te dwie klasy są od siebie niezależne, bardzo ułatwia to wprowadzanie zmian w kodzie. Zapewnia również lepszą testowalność.
Jeśli chcesz dowiedzieć się więcej o tworzeniu oprogramowania, sprawdź Master of Science in Computer Science z LJMU, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 12 projektów i zadań, 1-ON-1 z mentorami branżowymi, ponad 500 godzin nauki.