Google Guice - Liên kết được Liên kết
Trong Ràng buộc được liên kết, Guice ánh xạ một kiểu để triển khai nó. Trong ví dụ dưới đây, chúng tôi đã ánh xạ giao diện SpellChecker với việc triển khai SpellCheckerImpl.
bind(SpellChecker.class).to(SpellCheckerImpl.class);
Chúng ta cũng có thể ánh xạ lớp cụ thể với lớp con của nó. Xem ví dụ bên dưới:
bind(SpellCheckerImpl.class).to(WinWordSpellCheckerImpl.class);
Ở đây chúng tôi đã xâu chuỗi các ràng buộc. Hãy xem kết quả trong ví dụ đầy đủ.
Hoàn thành ví dụ
Tạo một lớp java có tên là GuiceTester.
GuiceTester.java
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
public class GuiceTester {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new TextEditorModule());
TextEditor editor = injector.getInstance(TextEditor.class);
editor.makeSpellCheck();
}
}
class TextEditor {
private SpellChecker spellChecker;
@Inject
public TextEditor(SpellChecker spellChecker) {
this.spellChecker = spellChecker;
}
public void makeSpellCheck(){
spellChecker.checkSpelling();
}
}
//Binding Module
class TextEditorModule extends AbstractModule {
@Override
protected void configure() {
bind(SpellChecker.class).to(SpellCheckerImpl.class);
bind(SpellCheckerImpl.class).to(WinWordSpellCheckerImpl.class);
}
}
//spell checker interface
interface SpellChecker {
public void checkSpelling();
}
//spell checker implementation
class SpellCheckerImpl implements SpellChecker {
@Override
public void checkSpelling() {
System.out.println("Inside checkSpelling." );
}
}
//subclass of SpellCheckerImpl
class WinWordSpellCheckerImpl extends SpellCheckerImpl{
@Override
public void checkSpelling() {
System.out.println("Inside WinWordSpellCheckerImpl.checkSpelling." );
}
}
Đầu ra
Biên dịch và chạy tệp, bạn sẽ thấy kết quả sau.
Inside WinWordSpellCheckerImpl.checkSpelling.