46 lines
		
	
	
		
			897 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			897 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								@startuml
							 | 
						||
| 
								 | 
							
								package com.iluwatar.factorykit {
							 | 
						||
| 
								 | 
							
								  class App {
							 | 
						||
| 
								 | 
							
								    - LOGGER : Logger {static}
							 | 
						||
| 
								 | 
							
								    + App()
							 | 
						||
| 
								 | 
							
								    + main(args : String[]) {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Axe {
							 | 
						||
| 
								 | 
							
								    + Axe()
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Bow {
							 | 
						||
| 
								 | 
							
								    + Bow()
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface Builder {
							 | 
						||
| 
								 | 
							
								    + add(WeaponType, Supplier<Weapon>) {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Spear {
							 | 
						||
| 
								 | 
							
								    + Spear()
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Sword {
							 | 
						||
| 
								 | 
							
								    + Sword()
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface Weapon {
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface WeaponFactory {
							 | 
						||
| 
								 | 
							
								    + create(WeaponType) : Weapon {abstract}
							 | 
						||
| 
								 | 
							
								    + factory(consumer : Consumer<Builder>) : WeaponFactory {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  enum WeaponType {
							 | 
						||
| 
								 | 
							
								    + AXE {static}
							 | 
						||
| 
								 | 
							
								    + BOW {static}
							 | 
						||
| 
								 | 
							
								    + SPEAR {static}
							 | 
						||
| 
								 | 
							
								    + SWORD {static}
							 | 
						||
| 
								 | 
							
								    + valueOf(name : String) : WeaponType {static}
							 | 
						||
| 
								 | 
							
								    + values() : WeaponType[] {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								Axe ..|> Weapon 
							 | 
						||
| 
								 | 
							
								Bow ..|> Weapon 
							 | 
						||
| 
								 | 
							
								Spear ..|> Weapon 
							 | 
						||
| 
								 | 
							
								Sword ..|> Weapon 
							 | 
						||
| 
								 | 
							
								@enduml
							 |