Java пользовательские слушатели
Мне нужна помощь со слушателем в Java. Я пишу простенькую библиотеку упрощающую создание сервера на Java.
Добавил несколько методов: onClientConnected(Client client), onClientDisconnected(Client client), onMessageReceived(Client client, String message).
Как сделать так, чтобы пользователь написал сам код, который будет действовать в этих случаях, заранее использовав переданные параметры?
Тоже самое работает с кнопкой в Swing: jButton.addActionListenner(ActionEvent e), где я могу сразу пользоваться возможностями объекта e.
P.S. Я пытался искать об этом информацию в Интернете, но так ничего и не понял. Видимо, пришло время научиться.
Ответы (1 шт):
Если я правильно понял, то вам нужен шаблон проектирования Observer(Наблюдатель) - надо завести поле для хранения слушателя, который снаружи будет обрабатывать соответствующие события, происходящие внутри какого-либо класса (у вас это, видимо, сервер):
public interface ServerListener {
void onClientConnected(Client client);
}
public class Server {
private ServerListner listener = null;
public void setServerListener(ServerListener listener) {
this.listener = listener;
}
public void onClientConnected(Client client) {
if( this.listener != null ) {
this.listener.onClientConnected(client);
}
}
}
Где-то в другом месте:
Server server = new Server();
// Регистрируем анонимный объект-обработчик
server.setServerListener(new ServerListener() {
void onClientConnected(Client client) {
// обработка события
}
});