Skip to content

Commit 7d2e9fa

Browse files
committed
iluwatar#107 JavaDoc improvements and minor fixes to Bridge example
1 parent 8d62156 commit 7d2e9fa

19 files changed

+369
-316
lines changed

bridge/etc/bridge.png

4.64 KB
Loading

bridge/etc/bridge.ucls

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<class-diagram version="1.1.8" icons="true" automaticImage="PNG" always-add-relationships="false" generalizations="true"
33
realizations="true" associations="true" dependencies="false" nesting-relationships="true">
4-
<class id="1" language="java" name="com.iluwatar.bridge.FlyingMagicWeaponImp" project="bridge"
5-
file="/bridge/src/main/java/com/iluwatar/bridge/FlyingMagicWeaponImp.java" binary="false" corner="BOTTOM_RIGHT">
6-
<position height="105" width="192" x="193" y="297"/>
4+
<class id="1" language="java" name="com.iluwatar.bridge.FlyingMagicWeaponImpl" project="bridge"
5+
file="/bridge/src/main/java/com/iluwatar/bridge/FlyingMagicWeaponImpl.java" binary="false" corner="BOTTOM_RIGHT">
6+
<position height="-1" width="-1" x="515" y="591"/>
77
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
88
sort-features="false" accessors="true" visibility="true">
99
<attributes public="true" package="true" protected="true" private="true" static="true"/>
1010
<operations public="true" package="true" protected="true" private="true" static="true"/>
1111
</display>
1212
</class>
13-
<class id="2" language="java" name="com.iluwatar.bridge.SoulEatingMagicWeaponImp" project="bridge"
14-
file="/bridge/src/main/java/com/iluwatar/bridge/SoulEatingMagicWeaponImp.java" binary="false" corner="BOTTOM_RIGHT">
15-
<position height="105" width="226" x="425" y="297"/>
13+
<class id="2" language="java" name="com.iluwatar.bridge.SoulEatingMagicWeaponImpl" project="bridge"
14+
file="/bridge/src/main/java/com/iluwatar/bridge/SoulEatingMagicWeaponImpl.java" binary="false" corner="BOTTOM_RIGHT">
15+
<position height="-1" width="-1" x="791" y="605"/>
1616
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
1717
sort-features="false" accessors="true" visibility="true">
1818
<attributes public="true" package="true" protected="true" private="true" static="true"/>
@@ -21,25 +21,25 @@
2121
</class>
2222
<class id="3" language="java" name="com.iluwatar.bridge.Stormbringer" project="bridge"
2323
file="/bridge/src/main/java/com/iluwatar/bridge/Stormbringer.java" binary="false" corner="BOTTOM_RIGHT">
24-
<position height="160" width="125" x="425" y="442"/>
24+
<position height="-1" width="-1" x="791" y="788"/>
2525
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
2626
sort-features="false" accessors="true" visibility="true">
2727
<attributes public="true" package="true" protected="true" private="true" static="true"/>
2828
<operations public="true" package="true" protected="true" private="true" static="true"/>
2929
</display>
3030
</class>
31-
<class id="4" language="java" name="com.iluwatar.bridge.MagicWeaponImp" project="bridge"
32-
file="/bridge/src/main/java/com/iluwatar/bridge/MagicWeaponImp.java" binary="false" corner="BOTTOM_RIGHT">
33-
<position height="141" width="149" x="221" y="79"/>
31+
<class id="4" language="java" name="com.iluwatar.bridge.MagicWeaponImpl" project="bridge"
32+
file="/bridge/src/main/java/com/iluwatar/bridge/MagicWeaponImpl.java" binary="false" corner="BOTTOM_RIGHT">
33+
<position height="-1" width="-1" x="791" y="433"/>
3434
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
3535
sort-features="false" accessors="true" visibility="true">
3636
<attributes public="true" package="true" protected="true" private="true" static="true"/>
3737
<operations public="true" package="true" protected="true" private="true" static="true"/>
3838
</display>
3939
</class>
40-
<class id="5" language="java" name="com.iluwatar.bridge.BlindingMagicWeaponImp" project="bridge"
41-
file="/bridge/src/main/java/com/iluwatar/bridge/BlindingMagicWeaponImp.java" binary="false" corner="BOTTOM_RIGHT">
42-
<position height="105" width="208" x="691" y="297"/>
40+
<class id="5" language="java" name="com.iluwatar.bridge.BlindingMagicWeaponImpl" project="bridge"
41+
file="/bridge/src/main/java/com/iluwatar/bridge/BlindingMagicWeaponImpl.java" binary="false" corner="BOTTOM_RIGHT">
42+
<position height="-1" width="-1" x="1105" y="593"/>
4343
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
4444
sort-features="false" accessors="true" visibility="true">
4545
<attributes public="true" package="true" protected="true" private="true" static="true"/>
@@ -48,7 +48,7 @@
4848
</class>
4949
<class id="6" language="java" name="com.iluwatar.bridge.SoulEatingMagicWeapon" project="bridge"
5050
file="/bridge/src/main/java/com/iluwatar/bridge/SoulEatingMagicWeapon.java" binary="false" corner="BOTTOM_RIGHT">
51-
<position height="178" width="347" x="410" y="79"/>
51+
<position height="-1" width="-1" x="380" y="21"/>
5252
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
5353
sort-features="false" accessors="true" visibility="true">
5454
<attributes public="true" package="true" protected="true" private="true" static="true"/>
@@ -57,7 +57,7 @@
5757
</class>
5858
<class id="7" language="java" name="com.iluwatar.bridge.Excalibur" project="bridge"
5959
file="/bridge/src/main/java/com/iluwatar/bridge/Excalibur.java" binary="false" corner="BOTTOM_RIGHT">
60-
<position height="160" width="124" x="691" y="442"/>
60+
<position height="-1" width="-1" x="1105" y="782"/>
6161
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
6262
sort-features="false" accessors="true" visibility="true">
6363
<attributes public="true" package="true" protected="true" private="true" static="true"/>
@@ -66,7 +66,7 @@
6666
</class>
6767
<class id="8" language="java" name="com.iluwatar.bridge.Mjollnir" project="bridge"
6868
file="/bridge/src/main/java/com/iluwatar/bridge/Mjollnir.java" binary="false" corner="BOTTOM_RIGHT">
69-
<position height="160" width="124" x="193" y="442"/>
69+
<position height="-1" width="-1" x="515" y="788"/>
7070
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
7171
sort-features="false" accessors="true" visibility="true">
7272
<attributes public="true" package="true" protected="true" private="true" static="true"/>
@@ -75,7 +75,7 @@
7575
</class>
7676
<class id="9" language="java" name="com.iluwatar.bridge.BlindingMagicWeapon" project="bridge"
7777
file="/bridge/src/main/java/com/iluwatar/bridge/BlindingMagicWeapon.java" binary="false" corner="BOTTOM_RIGHT">
78-
<position height="178" width="313" x="797" y="79"/>
78+
<position height="-1" width="-1" x="791" y="14"/>
7979
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
8080
sort-features="false" accessors="true" visibility="true">
8181
<attributes public="true" package="true" protected="true" private="true" static="true"/>
@@ -84,7 +84,7 @@
8484
</class>
8585
<class id="10" language="java" name="com.iluwatar.bridge.MagicWeapon" project="bridge"
8686
file="/bridge/src/main/java/com/iluwatar/bridge/MagicWeapon.java" binary="false" corner="BOTTOM_RIGHT">
87-
<position height="159" width="221" x="644" y="-120"/>
87+
<position height="-1" width="-1" x="791" y="237"/>
8888
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
8989
sort-features="false" accessors="true" visibility="true">
9090
<attributes public="true" package="true" protected="true" private="true" static="true"/>
@@ -93,56 +93,60 @@
9393
</class>
9494
<class id="11" language="java" name="com.iluwatar.bridge.FlyingMagicWeapon" project="bridge"
9595
file="/bridge/src/main/java/com/iluwatar/bridge/FlyingMagicWeapon.java" binary="false" corner="BOTTOM_RIGHT">
96-
<position height="178" width="291" x="1150" y="79"/>
96+
<position height="-1" width="-1" x="1144" y="12"/>
9797
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
9898
sort-features="false" accessors="true" visibility="true">
9999
<attributes public="true" package="true" protected="true" private="true" static="true"/>
100100
<operations public="true" package="true" protected="true" private="true" static="true"/>
101101
</display>
102102
</class>
103103
<generalization id="12">
104-
<end type="SOURCE" refId="11"/>
105-
<end type="TARGET" refId="10"/>
104+
<end type="SOURCE" refId="8"/>
105+
<end type="TARGET" refId="1"/>
106106
</generalization>
107107
<generalization id="13">
108108
<end type="SOURCE" refId="1"/>
109109
<end type="TARGET" refId="4"/>
110110
</generalization>
111111
<generalization id="14">
112-
<end type="SOURCE" refId="2"/>
113-
<end type="TARGET" refId="4"/>
114-
</generalization>
115-
<generalization id="15">
116-
<end type="SOURCE" refId="7"/>
117-
<end type="TARGET" refId="5"/>
118-
</generalization>
119-
<generalization id="16">
120-
<end type="SOURCE" refId="6"/>
121-
<end type="TARGET" refId="10"/>
122-
</generalization>
123-
<generalization id="17">
124112
<end type="SOURCE" refId="9"/>
125113
<end type="TARGET" refId="10"/>
126114
</generalization>
127-
<generalization id="18">
128-
<end type="SOURCE" refId="3"/>
129-
<end type="TARGET" refId="2"/>
115+
<generalization id="15">
116+
<end type="SOURCE" refId="2"/>
117+
<end type="TARGET" refId="4"/>
130118
</generalization>
131-
<association id="19">
119+
<association id="16">
132120
<end type="SOURCE" refId="10" navigable="false">
133-
<attribute id="20" name="imp"/>
134-
<multiplicity id="21" minimum="0" maximum="1"/>
121+
<attribute id="17" name="imp">
122+
<position height="0" width="0" x="478" y="284"/>
123+
</attribute>
124+
<multiplicity id="18" minimum="0" maximum="1">
125+
<position height="0" width="0" x="478" y="284"/>
126+
</multiplicity>
135127
</end>
136128
<end type="TARGET" refId="4" navigable="true"/>
137129
<display labels="true" multiplicity="true"/>
138130
</association>
139-
<generalization id="22">
131+
<generalization id="19">
140132
<end type="SOURCE" refId="5"/>
141133
<end type="TARGET" refId="4"/>
142134
</generalization>
135+
<generalization id="20">
136+
<end type="SOURCE" refId="6"/>
137+
<end type="TARGET" refId="10"/>
138+
</generalization>
139+
<generalization id="21">
140+
<end type="SOURCE" refId="7"/>
141+
<end type="TARGET" refId="5"/>
142+
</generalization>
143+
<generalization id="22">
144+
<end type="SOURCE" refId="3"/>
145+
<end type="TARGET" refId="2"/>
146+
</generalization>
143147
<generalization id="23">
144-
<end type="SOURCE" refId="8"/>
145-
<end type="TARGET" refId="1"/>
148+
<end type="SOURCE" refId="11"/>
149+
<end type="TARGET" refId="10"/>
146150
</generalization>
147151
<classifier-display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
148152
sort-features="false" accessors="true" visibility="true">

bridge/etc/bridge_1.png

-84.6 KB
Binary file not shown.

bridge/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ tags: pattern_tag
1111
vary independently.
1212

1313

14-
![alt text](./etc/bridge_1.png "Bridge")
14+
![alt text](./etc/bridge.png "Bridge")
1515

1616
**Applicability:** Use the Bridge pattern when
1717

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,39 @@
1-
package com.iluwatar.bridge;
2-
3-
/**
4-
*
5-
* In Bridge pattern both abstraction (MagicWeapon) and implementation
6-
* (MagicWeaponImp) have their own class hierarchies. The interface of the
7-
* implementations can be changed without affecting the clients.
8-
*
9-
*/
10-
public class App {
11-
12-
public static void main(String[] args) {
13-
BlindingMagicWeapon blindingMagicWeapon = new BlindingMagicWeapon(
14-
new Excalibur());
15-
blindingMagicWeapon.wield();
16-
blindingMagicWeapon.blind();
17-
blindingMagicWeapon.swing();
18-
blindingMagicWeapon.unwield();
19-
20-
FlyingMagicWeapon flyingMagicWeapon = new FlyingMagicWeapon(
21-
new Mjollnir());
22-
flyingMagicWeapon.wield();
23-
flyingMagicWeapon.fly();
24-
flyingMagicWeapon.swing();
25-
flyingMagicWeapon.unwield();
26-
27-
SoulEatingMagicWeapon soulEatingMagicWeapon = new SoulEatingMagicWeapon(
28-
new Stormbringer());
29-
soulEatingMagicWeapon.wield();
30-
soulEatingMagicWeapon.swing();
31-
soulEatingMagicWeapon.eatSoul();
32-
soulEatingMagicWeapon.unwield();
33-
34-
}
35-
}
1+
package com.iluwatar.bridge;
2+
3+
/**
4+
*
5+
* In Bridge pattern both abstraction ({@link MagicWeapon}) and implementation
6+
* ({@link MagicWeaponImpl}) have their own class hierarchies. The interface of the
7+
* implementations can be changed without affecting the clients.
8+
*
9+
*/
10+
public class App {
11+
12+
/**
13+
* Program entry point
14+
* @param args command line args
15+
*/
16+
public static void main(String[] args) {
17+
BlindingMagicWeapon blindingMagicWeapon = new BlindingMagicWeapon(
18+
new Excalibur());
19+
blindingMagicWeapon.wield();
20+
blindingMagicWeapon.blind();
21+
blindingMagicWeapon.swing();
22+
blindingMagicWeapon.unwield();
23+
24+
FlyingMagicWeapon flyingMagicWeapon = new FlyingMagicWeapon(
25+
new Mjollnir());
26+
flyingMagicWeapon.wield();
27+
flyingMagicWeapon.fly();
28+
flyingMagicWeapon.swing();
29+
flyingMagicWeapon.unwield();
30+
31+
SoulEatingMagicWeapon soulEatingMagicWeapon = new SoulEatingMagicWeapon(
32+
new Stormbringer());
33+
soulEatingMagicWeapon.wield();
34+
soulEatingMagicWeapon.swing();
35+
soulEatingMagicWeapon.eatSoul();
36+
soulEatingMagicWeapon.unwield();
37+
38+
}
39+
}
Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,38 @@
1-
package com.iluwatar.bridge;
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-
}
1+
package com.iluwatar.bridge;
2+
3+
/**
4+
*
5+
* BlindingMagicWeapon
6+
*
7+
*/
8+
public class BlindingMagicWeapon extends MagicWeapon {
9+
10+
public BlindingMagicWeapon(BlindingMagicWeaponImpl imp) {
11+
super(imp);
12+
}
13+
14+
@Override
15+
public BlindingMagicWeaponImpl getImp() {
16+
return (BlindingMagicWeaponImpl) imp;
17+
}
18+
19+
@Override
20+
public void wield() {
21+
getImp().wieldImp();
22+
}
23+
24+
@Override
25+
public void swing() {
26+
getImp().swingImp();
27+
}
28+
29+
@Override
30+
public void unwield() {
31+
getImp().unwieldImp();
32+
}
33+
34+
public void blind() {
35+
getImp().blindImp();
36+
}
37+
38+
}

bridge/src/main/java/com/iluwatar/bridge/BlindingMagicWeaponImp.java

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.iluwatar.bridge;
2+
3+
/**
4+
*
5+
* BlindingMagicWeaponImpl
6+
*
7+
*/
8+
public abstract class BlindingMagicWeaponImpl extends MagicWeaponImpl {
9+
10+
public abstract void blindImp();
11+
12+
}

0 commit comments

Comments
 (0)