File tree Expand file tree Collapse file tree 14 files changed +276
-0
lines changed
src/main/java/com/iluwatar Expand file tree Collapse file tree 14 files changed +276
-0
lines changed Original file line number Diff line number Diff line change 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 >
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 1+ package com .iluwatar ;
2+
3+ public abstract class BlindingMagicWeaponImp extends MagicWeaponImp {
4+
5+ public abstract void blindImp ();
6+
7+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 1+ package com .iluwatar ;
2+
3+ public abstract class FlyingMagicWeaponImp extends MagicWeaponImp {
4+
5+ public abstract void flyImp ();
6+
7+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments