package bridge; /** * Abstraction — the remote control. It holds a reference to a Device * (the "bridge") and delegates all real work to it. * * The key: RemoteControl doesn't care whether it talks to a TV or Radio. * It holds a Device and calls Device methods. That's the bridge. */ public class RemoteControl { // The bridge — link from Abstraction to Implementation protected Device device; public RemoteControl(Device device) { this.device = device; System.out.println("Remote paired with: " + device.getName()); } public void togglePower() { if (device.isEnabled()) { device.disable(); } else { device.enable(); } } public void volumeUp() { device.setVolume(device.getVolume() + 10); } public void volumeDown() { device.setVolume(device.getVolume() - 10); } public void channelUp() { device.setChannel(device.getChannel() + 1); } public void channelDown() { device.setChannel(device.getChannel() - 1); } }