92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@startuml
 | 
						|
package com.iluwatar.bridge {
 | 
						|
  class App {
 | 
						|
    + App()
 | 
						|
    + main(args : String[]) {static}
 | 
						|
  }
 | 
						|
  class BlindingMagicWeapon {
 | 
						|
    + BlindingMagicWeapon(imp : BlindingMagicWeaponImpl)
 | 
						|
    + blind()
 | 
						|
    + getImp() : BlindingMagicWeaponImpl
 | 
						|
    + swing()
 | 
						|
    + unwield()
 | 
						|
    + wield()
 | 
						|
  }
 | 
						|
  abstract class BlindingMagicWeaponImpl {
 | 
						|
    + BlindingMagicWeaponImpl()
 | 
						|
    + blindImp() {abstract}
 | 
						|
  }
 | 
						|
  class Excalibur {
 | 
						|
    - LOGGER : Logger {static}
 | 
						|
    + Excalibur()
 | 
						|
    + blindImp()
 | 
						|
    + swingImp()
 | 
						|
    + unwieldImp()
 | 
						|
    + wieldImp()
 | 
						|
  }
 | 
						|
  class FlyingMagicWeapon {
 | 
						|
    + FlyingMagicWeapon(imp : FlyingMagicWeaponImpl)
 | 
						|
    + fly()
 | 
						|
    + getImp() : FlyingMagicWeaponImpl
 | 
						|
    + swing()
 | 
						|
    + unwield()
 | 
						|
    + wield()
 | 
						|
  }
 | 
						|
  abstract class FlyingMagicWeaponImpl {
 | 
						|
    + FlyingMagicWeaponImpl()
 | 
						|
    + flyImp() {abstract}
 | 
						|
  }
 | 
						|
  abstract class MagicWeapon {
 | 
						|
    # imp : MagicWeaponImpl
 | 
						|
    + MagicWeapon(imp : MagicWeaponImpl)
 | 
						|
    + getImp() : MagicWeaponImpl
 | 
						|
    + swing() {abstract}
 | 
						|
    + unwield() {abstract}
 | 
						|
    + wield() {abstract}
 | 
						|
  }
 | 
						|
  abstract class MagicWeaponImpl {
 | 
						|
    + MagicWeaponImpl()
 | 
						|
    + swingImp() {abstract}
 | 
						|
    + unwieldImp() {abstract}
 | 
						|
    + wieldImp() {abstract}
 | 
						|
  }
 | 
						|
  class Mjollnir {
 | 
						|
    - LOGGER : Logger {static}
 | 
						|
    + Mjollnir()
 | 
						|
    + flyImp()
 | 
						|
    + swingImp()
 | 
						|
    + unwieldImp()
 | 
						|
    + wieldImp()
 | 
						|
  }
 | 
						|
  class SoulEatingMagicWeapon {
 | 
						|
    + SoulEatingMagicWeapon(imp : SoulEatingMagicWeaponImpl)
 | 
						|
    + eatSoul()
 | 
						|
    + getImp() : SoulEatingMagicWeaponImpl
 | 
						|
    + swing()
 | 
						|
    + unwield()
 | 
						|
    + wield()
 | 
						|
  }
 | 
						|
  abstract class SoulEatingMagicWeaponImpl {
 | 
						|
    + SoulEatingMagicWeaponImpl()
 | 
						|
    + eatSoulImp() {abstract}
 | 
						|
  }
 | 
						|
  class Stormbringer {
 | 
						|
    - LOGGER : Logger {static}
 | 
						|
    + Stormbringer()
 | 
						|
    + eatSoulImp()
 | 
						|
    + swingImp()
 | 
						|
    + unwieldImp()
 | 
						|
    + wieldImp()
 | 
						|
  }
 | 
						|
}
 | 
						|
MagicWeapon -->  "-imp" MagicWeaponImpl
 | 
						|
BlindingMagicWeapon --|> MagicWeapon 
 | 
						|
BlindingMagicWeaponImpl --|> MagicWeaponImpl 
 | 
						|
Excalibur --|> BlindingMagicWeaponImpl 
 | 
						|
FlyingMagicWeapon --|> MagicWeapon 
 | 
						|
FlyingMagicWeaponImpl --|> MagicWeaponImpl 
 | 
						|
Mjollnir --|> FlyingMagicWeaponImpl 
 | 
						|
SoulEatingMagicWeapon --|> MagicWeapon 
 | 
						|
SoulEatingMagicWeaponImpl --|> MagicWeaponImpl 
 | 
						|
Stormbringer --|> SoulEatingMagicWeaponImpl 
 | 
						|
@enduml |