2014-08-12 23:09:32 +03:00
|
|
|
package com.iluwatar;
|
|
|
|
|
2014-08-31 08:56:13 +03:00
|
|
|
/**
|
2014-10-07 16:23:37 +01:00
|
|
|
*
|
|
|
|
* 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.
|
2014-08-31 08:56:13 +03:00
|
|
|
*
|
|
|
|
*/
|
2014-10-07 16:23:37 +01:00
|
|
|
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();
|
|
|
|
|
2014-08-12 23:09:32 +03:00
|
|
|
}
|
|
|
|
}
|