Skip to content

Commit e5fc439

Browse files
committed
added bridge sample
1 parent 9ae6629 commit e5fc439

14 files changed

+276
-0
lines changed

bridge/pom.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0"?>
2+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<groupId>com.iluwatar</groupId>
7+
<artifactId>java-design-patterns</artifactId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<groupId>com.iluwatar</groupId>
11+
<artifactId>bridge</artifactId>
12+
<version>1.0-SNAPSHOT</version>
13+
<name>bridge</name>
14+
<url>http://maven.apache.org</url>
15+
<dependencies>
16+
<dependency>
17+
<groupId>junit</groupId>
18+
<artifactId>junit</artifactId>
19+
<version>3.8.1</version>
20+
<scope>test</scope>
21+
</dependency>
22+
</dependencies>
23+
</project>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.iluwatar;
2+
3+
public class App
4+
{
5+
public static void main( String[] args )
6+
{
7+
BlindingMagicWeapon blindingMagicWeapon = new BlindingMagicWeapon(new Excalibur());
8+
blindingMagicWeapon.wield();
9+
blindingMagicWeapon.blind();
10+
blindingMagicWeapon.swing();
11+
blindingMagicWeapon.unwield();
12+
13+
FlyingMagicWeapon flyingMagicWeapon = new FlyingMagicWeapon(new Mjollnir());
14+
flyingMagicWeapon.wield();
15+
flyingMagicWeapon.fly();
16+
flyingMagicWeapon.swing();
17+
flyingMagicWeapon.unwield();
18+
19+
SoulEatingMagicWeapon soulEatingMagicWeapon = new SoulEatingMagicWeapon(new Stormbringer());
20+
soulEatingMagicWeapon.wield();
21+
soulEatingMagicWeapon.swing();
22+
soulEatingMagicWeapon.eatSoul();
23+
soulEatingMagicWeapon.unwield();
24+
25+
}
26+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.iluwatar;
2+
3+
public class BlindingMagicWeapon extends MagicWeapon {
4+
5+
public BlindingMagicWeapon(BlindingMagicWeaponImp imp) {
6+
super(imp);
7+
}
8+
9+
@Override
10+
public BlindingMagicWeaponImp getImp() {
11+
return (BlindingMagicWeaponImp) imp;
12+
}
13+
14+
@Override
15+
public void wield() {
16+
getImp().wieldImp();
17+
}
18+
19+
@Override
20+
public void swing() {
21+
getImp().swingImp();
22+
}
23+
24+
@Override
25+
public void unwield() {
26+
getImp().unwieldImp();
27+
}
28+
29+
public void blind() {
30+
getImp().blindImp();
31+
}
32+
33+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.iluwatar;
2+
3+
public abstract class BlindingMagicWeaponImp extends MagicWeaponImp {
4+
5+
public abstract void blindImp();
6+
7+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.iluwatar;
2+
3+
public class Excalibur extends BlindingMagicWeaponImp {
4+
5+
@Override
6+
public void wieldImp() {
7+
System.out.println("wielding Excalibur");
8+
}
9+
10+
@Override
11+
public void swingImp() {
12+
System.out.println("swinging Excalibur");
13+
}
14+
15+
@Override
16+
public void unwieldImp() {
17+
System.out.println("unwielding Excalibur");
18+
}
19+
20+
@Override
21+
public void blindImp() {
22+
System.out.println("bright light streams from Excalibur blinding the enemy");
23+
}
24+
25+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.iluwatar;
2+
3+
public class FlyingMagicWeapon extends MagicWeapon {
4+
5+
public FlyingMagicWeapon(FlyingMagicWeaponImp imp) {
6+
super(imp);
7+
}
8+
9+
public FlyingMagicWeaponImp getImp() {
10+
return (FlyingMagicWeaponImp) imp;
11+
}
12+
13+
@Override
14+
public void wield() {
15+
getImp().wieldImp();
16+
}
17+
18+
@Override
19+
public void swing() {
20+
getImp().swingImp();
21+
}
22+
23+
@Override
24+
public void unwield() {
25+
getImp().unwieldImp();
26+
}
27+
28+
public void fly() {
29+
getImp().flyImp();
30+
}
31+
32+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.iluwatar;
2+
3+
public abstract class FlyingMagicWeaponImp extends MagicWeaponImp {
4+
5+
public abstract void flyImp();
6+
7+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.iluwatar;
2+
3+
public abstract class MagicWeapon {
4+
5+
protected MagicWeaponImp imp;
6+
7+
public MagicWeapon(MagicWeaponImp imp) {
8+
this.imp = imp;
9+
}
10+
11+
public abstract void wield();
12+
13+
public abstract void swing();
14+
15+
public abstract void unwield();
16+
17+
public MagicWeaponImp getImp() {
18+
return imp;
19+
}
20+
21+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.iluwatar;
2+
3+
public abstract class MagicWeaponImp {
4+
5+
public abstract void wieldImp();
6+
7+
public abstract void swingImp();
8+
9+
public abstract void unwieldImp();
10+
11+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.iluwatar;
2+
3+
public class Mjollnir extends FlyingMagicWeaponImp {
4+
5+
@Override
6+
public void wieldImp() {
7+
System.out.println("wielding Mjollnir");
8+
}
9+
10+
@Override
11+
public void swingImp() {
12+
System.out.println("swinging Mjollnir");
13+
}
14+
15+
@Override
16+
public void unwieldImp() {
17+
System.out.println("unwielding Mjollnir");
18+
}
19+
20+
@Override
21+
public void flyImp() {
22+
System.out.println("Mjollnir hits the enemy in the air and returns back to the owner's hand");
23+
}
24+
25+
}

0 commit comments

Comments
 (0)