Das ist mein Problem: Ich schreibe eine Java-Bibliothek, die eine bestimmte Art von Nachricht auf eine von zwei möglichen Arten verarbeiten kann (aber möglicherweise kann der Client andere Verarbeitungsmodalitäten hinzufügen). Ich habe die folgenden Klassen erstellt, nach der Strategie-Muster:Wie kann ich ein Factory-Muster verwenden, um Objekte zu initialisieren, die aus einer Konfiguration gelesen werden?
interface Processor {
Message processMessage();
}
class ProcessorOne<M extends Message> implements Processor{
M processMessage(){ //do stuff }
}
class ProcessorTwo<M extends Message> implements Processor{
M processMessage(){ //do other stuff }
}
abstract class Message{
}
//example
class MessageTypeOne extends Message{
}
//example
class MessageTypeTwo extends Message{
}
Jetzt verwendet der Client eine Konfiguration in einer Weise, so dass für jede konkrete Art von Nachricht, die er sagt: „MessageTypeOne: ProcessorOne, MessageTypeTwo: ProcessorTwo , MessageTypeThree: ProcessorOne ", wodurch festgestellt wird, dass Nachrichten des Typs MessageTypeOne von der Klasse ProcessorOne usw. verarbeitet werden müssen. Die Konfiguration kann eine XML-Datei oder eine andere Art von Konfiguration sein, dies liegt beim Client.
Meine Frage ist: Wie kann ich eine "Verbindung" zwischen dem, was Client von der Konfiguration liest (mit seiner eigenen Art der Analyse, je nach Konfigurationstyp) und der Instanziierung der konkreten Prozessoren mit einer Factory erstellen Muster?
Vielen Dank im Voraus
Auf diese Weise verantwortlich gemacht Client ist nur die Karte zu füllen, und dann eine Bibliothek Methode aufrufen, dass die Karte Inhalt Schleifen über konkrete Prozessoren zu schaffen (durch Reflexion ich denke), habe ich recht? – sibly22
@ sibly22 Ja. Die Prozessorinstanz kann auch in einer Karte zwischengespeichert werden. –
Vielen Dank – sibly22