정신적 인 루프에 걸렸거나 적어도 관찰자 패턴을 구현하는 방법에 대한 이해가 부족합니다. 내 의도 된 Controller
은 Observer
을 구현합니다. 문자 그대로, 문자 그대로 제어하는 인스턴스를 의미하기 때문입니다.MetaController는 세 개의 객체를 관찰해야합니다
Observable
은 문자 그대로 Controller
에 의해 관찰되기 때문에 관찰 된 개체가 확장됩니다. .addObserver(responseHandler);
을 어떻게 불러야합니까? 다른 클래스는 사실상 Observer 인터페이스를 구현하는 인스턴스에 옵저버를 추가합니다. 그건 옳지 않아.
----- 편집 ResponseHandler에 어떤 알 수없는 컨트롤러 여담으로
단지 일반적인 이름이고, 자바로 구현 된이 패턴에 이름과 네이밍 문제가, 아니면 그냥 부족 ----- 내 부분에 대한 이해? API 직접, 불행히도, 나를 위해 조명되지 읽기
public class MetaController implements Observer {
private final static Logger LOG = Logger.getLogger(MetaController.class.getName());
private Printer telnetPrinter = new Printer();
private telnetDataProcessor telnetDataProcessor = new telnetDataProcessor();
private StringReader stringReader = new StringReader();
private final ConcurrentLinkedQueue<Character> telnetData = new ConcurrentLinkedQueue();
public MetaController() {
}
//the printer and processor each spawn their own thread so that they don't
//block each other waiting for each other
public void readPrintParse(final InputStream inputStream) throws SocketException, IOException {
telnetPrinter.print(inputStream, telnetData); //populate telnetData in its own thread
telnetDataProcessor.read(telnetData); //process telnetData in its own thread
}
//the StringReader just looks for particular keywords like "press enter to continue"
//so that some phrases will trigger a response
//commands may also be typed manually by the user (not implemented yet)
@Override
public void update(Observable o, Object arg) {
//when telnetDataProcessor sends a String, send that String on to stringReader
String cmd = stringReader.parse(null); //parse what and how?
//send the command string back to the telnetClient
}
}
:
다음은 이제 컨트롤러의 컨트롤러로 변신 한 컨트롤러입니다.
이
뿐만 아니라, 비 종료 텔넷 데이터 스트림의 실시간 처리를 필요로하는 아파치WeatherTelnet
example의 확장, 간단한
MUD client 동시 스크립트 텔넷 및 라이브 텔넷 응답을 허용하는 가난한 마르스의 Netty의 일종이다 라이브 출력 및 사용자 입력
addObserver (이) ???? – Thufir