Add all 23 GoF design pattern implementations (2026-06-13)
This commit is contained in:
47
02-structural/bridge/Main.java
Normal file
47
02-structural/bridge/Main.java
Normal file
@@ -0,0 +1,47 @@
|
||||
package bridge;
|
||||
|
||||
/**
|
||||
* Bridge Design Pattern — Runnable Demo
|
||||
*
|
||||
* Shows how remotes (abstraction) and devices (implementation)
|
||||
* can vary independently. 4 combinations from 2+2 classes,
|
||||
* not 4 hard-coded classes.
|
||||
*
|
||||
* Run: javac bridge/*.java && java bridge.Main
|
||||
* Article: https://ankurm.com/bridge-design-pattern-java/
|
||||
*/
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println("=== Bridge Design Pattern Demo ===\n");
|
||||
|
||||
// Combination 1: Basic Remote + TV
|
||||
System.out.println("-- Basic Remote controlling TV --");
|
||||
RemoteControl remote1 = new RemoteControl(new TV());
|
||||
remote1.togglePower();
|
||||
remote1.volumeUp();
|
||||
remote1.channelUp();
|
||||
|
||||
System.out.println();
|
||||
|
||||
// Combination 2: Advanced Remote + Radio
|
||||
System.out.println("-- Advanced Remote controlling Radio --");
|
||||
AdvancedRemote remote2 = new AdvancedRemote(new Radio());
|
||||
remote2.togglePower();
|
||||
remote2.volumeUp();
|
||||
remote2.mute();
|
||||
remote2.jumpToChannel(91);
|
||||
|
||||
System.out.println();
|
||||
|
||||
// Combination 3: Advanced Remote + TV (no new classes needed)
|
||||
System.out.println("-- Advanced Remote controlling TV --");
|
||||
AdvancedRemote remote3 = new AdvancedRemote(new TV());
|
||||
remote3.togglePower();
|
||||
remote3.jumpToChannel(5);
|
||||
remote3.mute();
|
||||
|
||||
System.out.println("\n=== Demo complete ===");
|
||||
System.out.println("3 different remote+device combinations, 0 new classes needed.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user