Klasa Buton poprzez interfejs Switchable ma możliwość sterowania dowolnymi klasami które go implementują (np. Light).
public interface Switchable {
void turnOn();
}
public class Light : Switchable {
private bool lightOn;
public bool isOn() {
return lightOn;
}
public void turnOn() {
lightOn = true;
}
}
public class Button {
private Switchable device;
public Button(Switchable device) {
this.device = device;
}
public void press() {
device.turnOn();
}
}