이것은 내 문제입니다 : 두 가지 가능한 방법 중 하나를 사용하여 특정 유형의 메시지를 처리 할 수있는 Java 라이브러리를 작성 중입니다.하지만 잠재적으로 클라이언트가 다른 처리 방법을 추가 할 수 있습니다. 나는 전략 패턴에 따라, 다음과 같은 클래스를 만들었습니다 : "MessageTypeOne : ProcessorOne, MessageTypeTwo을 :팩토리 패턴을 사용하여 구성에서 읽은 개체를 인스턴스화하는 방법은 무엇입니까?
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{
}
이제 클라이언트는 메시지의 모든 구체적인 유형 그가 말하는 방식으로 구성을 사용 ProcessorTwo , MessageTypeThree : ProcessorOne ", MessageTypeOne 유형의 메시지가 ProcessorOne 클래스에 의해 처리되어야한다는 것을 확인합니다. 구성은 XML 파일이거나 다른 유형의 구성 일 수 있습니다. 이는 클라이언트에 달려 있습니다.
내 질문은 : 클라이언트가 구성에서 읽는 것 (자신이 선택한 구성 유형에 따라 고유 한 구문 분석 방법 사용)과 팩토리를 사용하는 구체적인 프로세서의 인스턴스화 사이에 "링크"를 만들 수있는 방법은 무엇입니까? 무늬?
미리 감사드립니다.
이렇게하면 클라이언트의 책임은지도를 채우고지도의 내용을 반복하여 콘크리트 프로세서를 만드는 루프 메소드를 호출하는 것입니다. – sibly22
@ sibly22 예. 프로세서 인스턴스는 맵에도 캐시 될 수 있습니다. –
고맙습니다. – sibly22