Korzystanie z Google Guice w celu ułatwienia testów jednostkowych jest tylko zaletą wysokiego poziomu. Niektórzy ludzie mogą nawet nie używać testów jednostkowych w swoim projekcie. Ludzie używają wtrysku Spring/Dependency Injection bardziej niż tylko do testów jednostkowych.
Niska przewaga korzystania z Google Guice to kwestia spójności w twojej aplikacji, twoje klasy w projekcie mogą być luźno powiązane między sobą. Mogę zapewnić klasę dla innej klasy bez ich zależności od siebie.
Rozważmy następujący przykład:
public class A{
}
public class B{
A a = new A();
}
Klasa B będzie ściśle sprzężone do klasy A, czyli innymi słowy jest to zależne do istnienia Klasa A jest.
Ale z Guice mogę zamiast uczynić go luźno tak:
public class B{
private A a;
@Inject
public B(A a){
this.a = a;
}
}
klasy B jest teraz luźno sprzężona A i Guice jest odpowiedzialny za dostarczenie instancji zamiast B konieczności jego instancję . Dzięki temu możesz go rozszerzyć, aby zapewnić interfejs od A do B, a implementacja może być obiektem Mock, jeśli chcesz przetestować swoje aplikacje.
Powiedziawszy, że omawiamy tylko korzyści wynikające z Dependency Injection. Beyond Dependency Injection, korzyści z używania Google Guice to:
- Guice ma bardzo czystą implementację Injection konstruktora. Jak widać na przykładzie, po prostu dodajemy konstruktor adnotacji @Injection.
- Guice ma również ustawiania Inject przy użyciu tej samej adnotacji.
- Powiedziawszy to, innotacja oparta na adnotacjach jest bardzo czystym podejściem w porównaniu do wtrysku opartego na XML, jak w przypadku innych implementacji DI.
- Cała iniekcja i konfiguracja zależności używa języka Java, więc masz pewność, że domyślnie uzyskasz w aplikacji typ danych.
- Guice ma bardzo lekką implementację programowania zorientowanego na aspekt (a może można go nazwać wrapperem do implementacji AOPAlliance AOP). A dobrą rzeczą jest to, że nie generuje żadnych skrótów ani tego, co-tak-kiedykolwiek.
Oto przegląd tego.Ale kiedy pogłębiasz się z Guice, jest o wiele więcej dobrych rzeczy. Prostym przykładem jest użycie , jeśli używasz GWT with MVP implementation, komponenty/widżety w twojej aplikacji GWT są bardzo luźno połączone i nie są ściśle ze sobą zintegrowane.
Co dokładnie masz na myśli, mówiąc o "negatywnych identyfikatorach ciągów refaktoryzujących"? Czy mógłbyś nieco rozszerzyć? – Geek