#107 JavaDoc improvements and minor fixes to Bridge example
This commit is contained in:
@ -1,35 +1,39 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* In Bridge pattern both abstraction (MagicWeapon) and implementation
|
||||
* (MagicWeaponImp) have their own class hierarchies. The interface of the
|
||||
* implementations can be changed without affecting the clients.
|
||||
*
|
||||
*/
|
||||
public class App {
|
||||
|
||||
public static void main(String[] args) {
|
||||
BlindingMagicWeapon blindingMagicWeapon = new BlindingMagicWeapon(
|
||||
new Excalibur());
|
||||
blindingMagicWeapon.wield();
|
||||
blindingMagicWeapon.blind();
|
||||
blindingMagicWeapon.swing();
|
||||
blindingMagicWeapon.unwield();
|
||||
|
||||
FlyingMagicWeapon flyingMagicWeapon = new FlyingMagicWeapon(
|
||||
new Mjollnir());
|
||||
flyingMagicWeapon.wield();
|
||||
flyingMagicWeapon.fly();
|
||||
flyingMagicWeapon.swing();
|
||||
flyingMagicWeapon.unwield();
|
||||
|
||||
SoulEatingMagicWeapon soulEatingMagicWeapon = new SoulEatingMagicWeapon(
|
||||
new Stormbringer());
|
||||
soulEatingMagicWeapon.wield();
|
||||
soulEatingMagicWeapon.swing();
|
||||
soulEatingMagicWeapon.eatSoul();
|
||||
soulEatingMagicWeapon.unwield();
|
||||
|
||||
}
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* In Bridge pattern both abstraction ({@link MagicWeapon}) and implementation
|
||||
* ({@link MagicWeaponImpl}) have their own class hierarchies. The interface of the
|
||||
* implementations can be changed without affecting the clients.
|
||||
*
|
||||
*/
|
||||
public class App {
|
||||
|
||||
/**
|
||||
* Program entry point
|
||||
* @param args command line args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
BlindingMagicWeapon blindingMagicWeapon = new BlindingMagicWeapon(
|
||||
new Excalibur());
|
||||
blindingMagicWeapon.wield();
|
||||
blindingMagicWeapon.blind();
|
||||
blindingMagicWeapon.swing();
|
||||
blindingMagicWeapon.unwield();
|
||||
|
||||
FlyingMagicWeapon flyingMagicWeapon = new FlyingMagicWeapon(
|
||||
new Mjollnir());
|
||||
flyingMagicWeapon.wield();
|
||||
flyingMagicWeapon.fly();
|
||||
flyingMagicWeapon.swing();
|
||||
flyingMagicWeapon.unwield();
|
||||
|
||||
SoulEatingMagicWeapon soulEatingMagicWeapon = new SoulEatingMagicWeapon(
|
||||
new Stormbringer());
|
||||
soulEatingMagicWeapon.wield();
|
||||
soulEatingMagicWeapon.swing();
|
||||
soulEatingMagicWeapon.eatSoul();
|
||||
soulEatingMagicWeapon.unwield();
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,33 +1,38 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public class BlindingMagicWeapon extends MagicWeapon {
|
||||
|
||||
public BlindingMagicWeapon(BlindingMagicWeaponImp imp) {
|
||||
super(imp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlindingMagicWeaponImp getImp() {
|
||||
return (BlindingMagicWeaponImp) imp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wield() {
|
||||
getImp().wieldImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swing() {
|
||||
getImp().swingImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwield() {
|
||||
getImp().unwieldImp();
|
||||
}
|
||||
|
||||
public void blind() {
|
||||
getImp().blindImp();
|
||||
}
|
||||
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* BlindingMagicWeapon
|
||||
*
|
||||
*/
|
||||
public class BlindingMagicWeapon extends MagicWeapon {
|
||||
|
||||
public BlindingMagicWeapon(BlindingMagicWeaponImpl imp) {
|
||||
super(imp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlindingMagicWeaponImpl getImp() {
|
||||
return (BlindingMagicWeaponImpl) imp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wield() {
|
||||
getImp().wieldImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swing() {
|
||||
getImp().swingImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwield() {
|
||||
getImp().unwieldImp();
|
||||
}
|
||||
|
||||
public void blind() {
|
||||
getImp().blindImp();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,7 +0,0 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public abstract class BlindingMagicWeaponImp extends MagicWeaponImp {
|
||||
|
||||
public abstract void blindImp();
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* BlindingMagicWeaponImpl
|
||||
*
|
||||
*/
|
||||
public abstract class BlindingMagicWeaponImpl extends MagicWeaponImpl {
|
||||
|
||||
public abstract void blindImp();
|
||||
|
||||
}
|
@ -1,26 +1,31 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public class Excalibur extends BlindingMagicWeaponImp {
|
||||
|
||||
@Override
|
||||
public void wieldImp() {
|
||||
System.out.println("wielding Excalibur");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swingImp() {
|
||||
System.out.println("swinging Excalibur");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwieldImp() {
|
||||
System.out.println("unwielding Excalibur");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blindImp() {
|
||||
System.out
|
||||
.println("bright light streams from Excalibur blinding the enemy");
|
||||
}
|
||||
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* Excalibur
|
||||
*
|
||||
*/
|
||||
public class Excalibur extends BlindingMagicWeaponImpl {
|
||||
|
||||
@Override
|
||||
public void wieldImp() {
|
||||
System.out.println("wielding Excalibur");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swingImp() {
|
||||
System.out.println("swinging Excalibur");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwieldImp() {
|
||||
System.out.println("unwielding Excalibur");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blindImp() {
|
||||
System.out
|
||||
.println("bright light streams from Excalibur blinding the enemy");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,32 +1,37 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public class FlyingMagicWeapon extends MagicWeapon {
|
||||
|
||||
public FlyingMagicWeapon(FlyingMagicWeaponImp imp) {
|
||||
super(imp);
|
||||
}
|
||||
|
||||
public FlyingMagicWeaponImp getImp() {
|
||||
return (FlyingMagicWeaponImp) imp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wield() {
|
||||
getImp().wieldImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swing() {
|
||||
getImp().swingImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwield() {
|
||||
getImp().unwieldImp();
|
||||
}
|
||||
|
||||
public void fly() {
|
||||
getImp().flyImp();
|
||||
}
|
||||
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* FlyingMagicWeapon
|
||||
*
|
||||
*/
|
||||
public class FlyingMagicWeapon extends MagicWeapon {
|
||||
|
||||
public FlyingMagicWeapon(FlyingMagicWeaponImpl imp) {
|
||||
super(imp);
|
||||
}
|
||||
|
||||
public FlyingMagicWeaponImpl getImp() {
|
||||
return (FlyingMagicWeaponImpl) imp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wield() {
|
||||
getImp().wieldImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swing() {
|
||||
getImp().swingImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwield() {
|
||||
getImp().unwieldImp();
|
||||
}
|
||||
|
||||
public void fly() {
|
||||
getImp().flyImp();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,7 +0,0 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public abstract class FlyingMagicWeaponImp extends MagicWeaponImp {
|
||||
|
||||
public abstract void flyImp();
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* FlyingMagicWeaponImpl
|
||||
*
|
||||
*/
|
||||
public abstract class FlyingMagicWeaponImpl extends MagicWeaponImpl {
|
||||
|
||||
public abstract void flyImp();
|
||||
|
||||
}
|
@ -1,26 +1,26 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* Abstraction interface.
|
||||
*
|
||||
*/
|
||||
public abstract class MagicWeapon {
|
||||
|
||||
protected MagicWeaponImp imp;
|
||||
|
||||
public MagicWeapon(MagicWeaponImp imp) {
|
||||
this.imp = imp;
|
||||
}
|
||||
|
||||
public abstract void wield();
|
||||
|
||||
public abstract void swing();
|
||||
|
||||
public abstract void unwield();
|
||||
|
||||
public MagicWeaponImp getImp() {
|
||||
return imp;
|
||||
}
|
||||
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* MagicWeapon
|
||||
*
|
||||
*/
|
||||
public abstract class MagicWeapon {
|
||||
|
||||
protected MagicWeaponImpl imp;
|
||||
|
||||
public MagicWeapon(MagicWeaponImpl imp) {
|
||||
this.imp = imp;
|
||||
}
|
||||
|
||||
public abstract void wield();
|
||||
|
||||
public abstract void swing();
|
||||
|
||||
public abstract void unwield();
|
||||
|
||||
public MagicWeaponImpl getImp() {
|
||||
return imp;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,16 +1,16 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* Implementation interface.
|
||||
*
|
||||
*/
|
||||
public abstract class MagicWeaponImp {
|
||||
|
||||
public abstract void wieldImp();
|
||||
|
||||
public abstract void swingImp();
|
||||
|
||||
public abstract void unwieldImp();
|
||||
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* MagicWeaponImpl
|
||||
*
|
||||
*/
|
||||
public abstract class MagicWeaponImpl {
|
||||
|
||||
public abstract void wieldImp();
|
||||
|
||||
public abstract void swingImp();
|
||||
|
||||
public abstract void unwieldImp();
|
||||
|
||||
}
|
@ -1,26 +1,31 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public class Mjollnir extends FlyingMagicWeaponImp {
|
||||
|
||||
@Override
|
||||
public void wieldImp() {
|
||||
System.out.println("wielding Mjollnir");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swingImp() {
|
||||
System.out.println("swinging Mjollnir");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwieldImp() {
|
||||
System.out.println("unwielding Mjollnir");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flyImp() {
|
||||
System.out
|
||||
.println("Mjollnir hits the enemy in the air and returns back to the owner's hand");
|
||||
}
|
||||
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* Mjollnir
|
||||
*
|
||||
*/
|
||||
public class Mjollnir extends FlyingMagicWeaponImpl {
|
||||
|
||||
@Override
|
||||
public void wieldImp() {
|
||||
System.out.println("wielding Mjollnir");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swingImp() {
|
||||
System.out.println("swinging Mjollnir");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwieldImp() {
|
||||
System.out.println("unwielding Mjollnir");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flyImp() {
|
||||
System.out
|
||||
.println("Mjollnir hits the enemy in the air and returns back to the owner's hand");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,33 +1,38 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public class SoulEatingMagicWeapon extends MagicWeapon {
|
||||
|
||||
public SoulEatingMagicWeapon(SoulEatingMagicWeaponImp imp) {
|
||||
super(imp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SoulEatingMagicWeaponImp getImp() {
|
||||
return (SoulEatingMagicWeaponImp) imp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wield() {
|
||||
getImp().wieldImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swing() {
|
||||
getImp().swingImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwield() {
|
||||
getImp().unwieldImp();
|
||||
}
|
||||
|
||||
public void eatSoul() {
|
||||
getImp().eatSoulImp();
|
||||
}
|
||||
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* SoulEatingMagicWeapon
|
||||
*
|
||||
*/
|
||||
public class SoulEatingMagicWeapon extends MagicWeapon {
|
||||
|
||||
public SoulEatingMagicWeapon(SoulEatingMagicWeaponImpl imp) {
|
||||
super(imp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SoulEatingMagicWeaponImpl getImp() {
|
||||
return (SoulEatingMagicWeaponImpl) imp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wield() {
|
||||
getImp().wieldImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swing() {
|
||||
getImp().swingImp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwield() {
|
||||
getImp().unwieldImp();
|
||||
}
|
||||
|
||||
public void eatSoul() {
|
||||
getImp().eatSoulImp();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,7 +0,0 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public abstract class SoulEatingMagicWeaponImp extends MagicWeaponImp {
|
||||
|
||||
public abstract void eatSoulImp();
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* SoulEatingMagicWeaponImpl
|
||||
*
|
||||
*/
|
||||
public abstract class SoulEatingMagicWeaponImpl extends MagicWeaponImpl {
|
||||
|
||||
public abstract void eatSoulImp();
|
||||
|
||||
}
|
@ -1,25 +1,30 @@
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
public class Stormbringer extends SoulEatingMagicWeaponImp {
|
||||
|
||||
@Override
|
||||
public void wieldImp() {
|
||||
System.out.println("wielding Stormbringer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swingImp() {
|
||||
System.out.println("swinging Stormbringer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwieldImp() {
|
||||
System.out.println("unwielding Stormbringer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void eatSoulImp() {
|
||||
System.out.println("Stormbringer devours the enemy's soul");
|
||||
}
|
||||
|
||||
}
|
||||
package com.iluwatar.bridge;
|
||||
|
||||
/**
|
||||
*
|
||||
* Stormbringer
|
||||
*
|
||||
*/
|
||||
public class Stormbringer extends SoulEatingMagicWeaponImpl {
|
||||
|
||||
@Override
|
||||
public void wieldImp() {
|
||||
System.out.println("wielding Stormbringer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swingImp() {
|
||||
System.out.println("swinging Stormbringer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwieldImp() {
|
||||
System.out.println("unwielding Stormbringer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void eatSoulImp() {
|
||||
System.out.println("Stormbringer devours the enemy's soul");
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user