Sử dụng Google Guice để dễ dàng trong thử nghiệm đơn vị chỉ là lợi thế cấp cao. Một số người thậm chí có thể không sử dụng thử nghiệm đơn vị trong dự án của họ. Mọi người đã sử dụng Spring/Dependency Injection hơn là chỉ để thử nghiệm đơn vị.
Lợi thế mức thấp của việc sử dụng Google Guice là vấn đề gắn kết trong ứng dụng của bạn, các lớp học của bạn trong dự án có thể được ghép lỏng lẻo giữa nhau. Tôi có thể cung cấp một lớp học cho một lớp khác mà không bị phụ thuộc lẫn nhau.
Hãy xem xét ví dụ sau:
public class A{
}
public class B{
A a = new A();
}
Class B sẽ được chặt chẽ cùng với Class A, hay nói cách khác, nó phụ thuộc vào sự tồn tại của lớp A.
Nhưng với Guice tôi thay vì có thể làm cho nó lỏng lẻo như thế này:
public class B{
private A a;
@Inject
public B(A a){
this.a = a;
}
}
Class B hiện nay lỏng lẻo cùng với A, và Guice có trách nhiệm cung cấp các ví dụ của A thay vì B phải nhanh chóng nó . Với điều này, bạn có thể mở rộng nó để cung cấp giao diện từ A đến B và việc triển khai có thể là đối tượng Mock nếu bạn muốn đơn vị kiểm tra ứng dụng của mình.
Có nói rằng chúng tôi chỉ thảo luận về các lợi ích của Dependency Injection cho đến thời điểm này. Ngoài tiêm phụ thuộc, lợi ích của việc sử dụng Google Guice là:
- Guice có triển khai thực hiện rất sạch sẽ. Như bạn có thể thấy từ ví dụ bạn chỉ cần thêm hàm tạo chú thích @Injection.
- Guice cũng có setter Injection sử dụng cùng một chú thích.
- Có nói rằng, chú thích dựa trên Tiêm là cách tiếp cận rất sạch sẽ so với tiêm dựa trên XML như một số thực hiện DI khác.
- Tất cả việc chèn và cấu hình phụ thuộc đều sử dụng Java, vì vậy bạn được bảo đảm để có được một loại an toàn trong ứng dụng của bạn theo mặc định.
- Guice có triển khai rất nhỏ về Lập trình hướng Aspect (hoặc có thể bạn gọi nó là trình bao bọc cho triển khai AOPAlliance AOP). Và điều tốt đẹp của nó là nó không tạo ra những cái cuống hay cái gì hết.
Đó là tổng quan về nó.Nhưng khi bạn nhận được sâu hơn với Guice, có rất nhiều điều tốt đẹp hơn về nó. Một ví dụ đơn giản thực tế là nếu bạn đang sử dụng GWT with MVP implementation, các thành phần/tiện ích trong ứng dụng GWT của bạn được kết hợp rất lỏng lẻo và không được tích hợp chặt chẽ với nhau.
Nguồn
2009-09-23 02:22:34
Chính xác bạn ngụ ý gì bởi "số nhận dạng chuỗi phản ứng bất lợi"? Bạn có thể mở rộng một chút không? – Geek