Пытаюсь создать паттерн посредник
Есть интерфейс Mediator:
package Eighth.mediator;
public interface Mediator {
void notify(Components components);
}
Есть класс его реализующий:
package Eighth.mediator;
public class ConcreteMediator implements Mediator{
@Override
public void notify(Components components) {
System.out.println("User pressed " + components.getName());
}
}
Есть интерфейс компонентов:
package Eighth.mediator;
public interface Components {
String getName();
void onPress();
}
Есть несколько классов компонентов, похожих друг на друга, пример:
package Eighth.mediator;
public class Button implements Components{
public Mediator mediator;
private String name;
public Button(String name) {
this.name = name;
mediator = new ConcreteMediator();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void onPress(){
mediator.notify();
}
}
Пытаюсь это всё запустить в Main:
package Eighth.mediator;
public class Main {
public static void main(String[] args) {
Components button1 = new Button("Button1");
Components button2 = new Button("Button2");
Components checkbox1 = new Checkbox("Checkbox1");
Components radioButton1 = new RadioButton("Radiobutton1");
Components checkbox2 = new Checkbox("Checkbox2");
button1.onPress();
button2.onPress();
}
}
Выскакивает та самая ошибка java.lang.IllegalMonitorStateException при выполнении метода onPress
В чём проблема?