| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | @startuml | 
					
						
							|  |  |  | package com.iluwatar.bridge { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class App { | 
					
						
							|  |  |  |     + App() | 
					
						
							|  |  |  |     + main(args : String[]) {static} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   class BlindingMagicWeapon { | 
					
						
							|  |  |  |     + BlindingMagicWeapon(imp : BlindingMagicWeaponImpl) | 
					
						
							|  |  |  |     + blind() | 
					
						
							|  |  |  |     + getImp() : BlindingMagicWeaponImpl | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + swing() | 
					
						
							|  |  |  |     + unwield() | 
					
						
							|  |  |  |     + wield() | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   abstract class BlindingMagicWeaponImpl { | 
					
						
							|  |  |  |     + BlindingMagicWeaponImpl() | 
					
						
							|  |  |  |     + blindImp() {abstract} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   class Excalibur { | 
					
						
							|  |  |  |     - LOGGER : Logger {static} | 
					
						
							|  |  |  |     + Excalibur() | 
					
						
							|  |  |  |     + blindImp() | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + swingImp() | 
					
						
							|  |  |  |     + unwieldImp() | 
					
						
							|  |  |  |     + wieldImp() | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class FlyingMagicWeapon { | 
					
						
							|  |  |  |     + FlyingMagicWeapon(imp : FlyingMagicWeaponImpl) | 
					
						
							|  |  |  |     + fly() | 
					
						
							|  |  |  |     + getImp() : FlyingMagicWeaponImpl | 
					
						
							|  |  |  |     + swing() | 
					
						
							|  |  |  |     + unwield() | 
					
						
							|  |  |  |     + wield() | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   abstract class FlyingMagicWeaponImpl { | 
					
						
							|  |  |  |     + FlyingMagicWeaponImpl() | 
					
						
							|  |  |  |     + flyImp() {abstract} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   abstract class MagicWeapon { | 
					
						
							|  |  |  |     # imp : MagicWeaponImpl | 
					
						
							|  |  |  |     + MagicWeapon(imp : MagicWeaponImpl) | 
					
						
							|  |  |  |     + getImp() : MagicWeaponImpl | 
					
						
							|  |  |  |     + swing() {abstract} | 
					
						
							|  |  |  |     + unwield() {abstract} | 
					
						
							|  |  |  |     + wield() {abstract} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							|  |  |  |   abstract class MagicWeaponImpl { | 
					
						
							|  |  |  |     + MagicWeaponImpl() | 
					
						
							|  |  |  |     + swingImp() {abstract} | 
					
						
							|  |  |  |     + unwieldImp() {abstract} | 
					
						
							|  |  |  |     + wieldImp() {abstract} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   class Mjollnir { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     - LOGGER : Logger {static} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + Mjollnir() | 
					
						
							|  |  |  |     + flyImp() | 
					
						
							|  |  |  |     + swingImp() | 
					
						
							|  |  |  |     + unwieldImp() | 
					
						
							|  |  |  |     + wieldImp() | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class SoulEatingMagicWeapon { | 
					
						
							|  |  |  |     + SoulEatingMagicWeapon(imp : SoulEatingMagicWeaponImpl) | 
					
						
							|  |  |  |     + eatSoul() | 
					
						
							|  |  |  |     + getImp() : SoulEatingMagicWeaponImpl | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     + swing() | 
					
						
							|  |  |  |     + unwield() | 
					
						
							|  |  |  |     + wield() | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   abstract class SoulEatingMagicWeaponImpl { | 
					
						
							|  |  |  |     + SoulEatingMagicWeaponImpl() | 
					
						
							|  |  |  |     + eatSoulImp() {abstract} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   class Stormbringer { | 
					
						
							|  |  |  |     - LOGGER : Logger {static} | 
					
						
							|  |  |  |     + Stormbringer() | 
					
						
							|  |  |  |     + eatSoulImp() | 
					
						
							|  |  |  |     + swingImp() | 
					
						
							|  |  |  |     + unwieldImp() | 
					
						
							|  |  |  |     + wieldImp() | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | } | 
					
						
							|  |  |  | MagicWeapon -->  "-imp" MagicWeaponImpl | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | BlindingMagicWeapon --|> MagicWeapon  | 
					
						
							|  |  |  | BlindingMagicWeaponImpl --|> MagicWeaponImpl  | 
					
						
							|  |  |  | Excalibur --|> BlindingMagicWeaponImpl  | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | FlyingMagicWeapon --|> MagicWeapon  | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | FlyingMagicWeaponImpl --|> MagicWeaponImpl  | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | Mjollnir --|> FlyingMagicWeaponImpl  | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | SoulEatingMagicWeapon --|> MagicWeapon  | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | SoulEatingMagicWeaponImpl --|> MagicWeaponImpl  | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | Stormbringer --|> SoulEatingMagicWeaponImpl  | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | @enduml |