Ich arbeite an einer Funktion, die vom Benutzer aktiviert und deaktiviert werden kann. Es ist in einem separaten Modul implementiert und es erstellt einige Threads und ein paar Singletons. Da ich ein separates Modul dafür habe und wir es später in einem separaten Prozess ausführen wollen, habe ich einen separaten Guice Injector dafür verwendet. So habe ich eine Factory-Methode, die den Injektor und gibt eine Klasse erstellt, die die Funktion Schnittstellen implementiert (es hat 3 Schnittstellen)So erstellen und beenden Sie ein Feature ordnungsgemäß
public class FeatureFactory {
private Injector injector;
public FeatureClass open() {
injector = createInjector();
return injector.getInstance(FeatureClass.class);
}
}
public class FeatureClass implements InterfaceA, InterfaceB, InterfaceC {
}
Fragen:
- Ist es sinnvoll, einen neuen Injektor zu schaffen in diesem Fall? Ich meine, wenn sich das gesamte Feature in einem separaten Modul befindet? Die Idee war, sie zu entkoppeln und nicht das neue Feature Guice-Modul als Teil der Feature-API zu haben. Wenn nicht, Was wäre ein besserer Ansatz?
- Das Zurückgeben der Feature-Class anstelle der Schnittstellen riecht nicht gut. Es informiert den Benutzer über die Implementierung Wie überwinde ich das? Derzeit habe ich die Anwendung Guice-Modul verwendet, um die Schnittstellen an die FeatureClass
- zu binden Wie schließe ich die Funktion und haben alle Klassen Müll gesammelt? Wie ich schon sagte, wenn das Feature geöffnet wird, werden einige Singletons und Threads erstellt. Wenn ich das Injektorfeld auf Null setze, bedeutet das, dass alles Müll gesammelt wird?
Ihre erste Frage ist zu breit und vor allem meinungsbezogen (wie die meisten Best-Practice-Fragen), wie in der [Hilfe/zum Thema], bitte bearbeiten Sie Ihre Frage entsprechend. –