Cześć!
Chciałem napisać własną implementację wzorca DI. Chciałbym się dowiedzieć, czy to co napisałem można wgl. nazwać dependency injection i dlaczego nie?
class Injector {
private PrintFactory printFactory;
private InputProvider inputProvider;
private TextChecker textChecker;
private FileHelper fileHelper;
private LessonProvider lessonProvider;
private KeyboardTeacher keyboardTeacher;
private PrintFactory getPrintFactory() {
if (printFactory == null)
this.printFactory = new PrintFactory();
return this.printFactory;
}
private InputProvider getInputProvider() {
if ((inputProvider == null))
inputProvider = new InputProvider();
return inputProvider;
}
private TextChecker getTextChecker() {
if(textChecker == null)
textChecker = new TextChecker(
getInputProvider(),
getPrintFactory()
);
return textChecker;
}
private FileHelper getFileHelper() {
if (fileHelper == null)
fileHelper = new FileHelper(
getPrintFactory(),
getInputProvider()
);
return fileHelper;
}
private LessonProvider getLessonProvider() {
if (lessonProvider == null)
lessonProvider = new LessonProvider(
getPrintFactory(),
getInputProvider(),
getTextChecker(),
getFileHelper()
);
return lessonProvider;
}
KeyboardTeacher getKeyboardTeacher() {
if (keyboardTeacher == null)
keyboardTeacher = new KeyboardTeacher(
getPrintFactory(),
getFileHelper(),
getLessonProvider()
);
return keyboardTeacher;
}
}
Wiem, że istnieje wiele bibliotek itd. ale chciałem zrozumiec jak to działa u podstaw. Klasa Injector właściwie powinna się nazywać Container lub coś podobnego, ale czy to w ogóle tak powinno działać? Jeśli potrafi mi ktoś to wyjaśnić, byłbym wdzięczny.
PS: Znacie jakąś dobrą książkę / stronę / jakiekolwiek źródło, dzięki któremu dobrze opanowałbym wzorce projektowe?