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();
  }
}