105 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			105 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								@startuml
							 | 
						||
| 
								 | 
							
								package com.iluwatar.prototype {
							 | 
						||
| 
								 | 
							
								  class App {
							 | 
						||
| 
								 | 
							
								    - LOGGER : Logger {static}
							 | 
						||
| 
								 | 
							
								    + App()
							 | 
						||
| 
								 | 
							
								    + main(args : String[]) {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  abstract class Beast {
							 | 
						||
| 
								 | 
							
								    + Beast()
							 | 
						||
| 
								 | 
							
								    + Beast(source : Beast)
							 | 
						||
| 
								 | 
							
								    + copy() : Beast {abstract}
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class ElfBeast {
							 | 
						||
| 
								 | 
							
								    - helpType : String
							 | 
						||
| 
								 | 
							
								    + ElfBeast(elfBeast : ElfBeast)
							 | 
						||
| 
								 | 
							
								    + ElfBeast(helpType : String)
							 | 
						||
| 
								 | 
							
								    + copy() : ElfBeast
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class ElfMage {
							 | 
						||
| 
								 | 
							
								    - helpType : String
							 | 
						||
| 
								 | 
							
								    + ElfMage(elfMage : ElfMage)
							 | 
						||
| 
								 | 
							
								    + ElfMage(helpType : String)
							 | 
						||
| 
								 | 
							
								    + copy() : ElfMage
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class ElfWarlord {
							 | 
						||
| 
								 | 
							
								    - helpType : String
							 | 
						||
| 
								 | 
							
								    + ElfWarlord(elfWarlord : ElfWarlord)
							 | 
						||
| 
								 | 
							
								    + ElfWarlord(helpType : String)
							 | 
						||
| 
								 | 
							
								    + copy() : ElfWarlord
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface HeroFactory {
							 | 
						||
| 
								 | 
							
								    + createBeast() : Beast {abstract}
							 | 
						||
| 
								 | 
							
								    + createMage() : Mage {abstract}
							 | 
						||
| 
								 | 
							
								    + createWarlord() : Warlord {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class HeroFactoryImpl {
							 | 
						||
| 
								 | 
							
								    - beast : Beast
							 | 
						||
| 
								 | 
							
								    - mage : Mage
							 | 
						||
| 
								 | 
							
								    - warlord : Warlord
							 | 
						||
| 
								 | 
							
								    + HeroFactoryImpl(mage : Mage, warlord : Warlord, beast : Beast)
							 | 
						||
| 
								 | 
							
								    + createBeast() : Beast
							 | 
						||
| 
								 | 
							
								    + createMage() : Mage
							 | 
						||
| 
								 | 
							
								    + createWarlord() : Warlord
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  abstract class Mage {
							 | 
						||
| 
								 | 
							
								    + Mage()
							 | 
						||
| 
								 | 
							
								    + Mage(source : Mage)
							 | 
						||
| 
								 | 
							
								    + copy() : Mage {abstract}
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class OrcBeast {
							 | 
						||
| 
								 | 
							
								    - weapon : String
							 | 
						||
| 
								 | 
							
								    + OrcBeast(orcBeast : OrcBeast)
							 | 
						||
| 
								 | 
							
								    + OrcBeast(weapon : String)
							 | 
						||
| 
								 | 
							
								    + copy() : OrcBeast
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class OrcMage {
							 | 
						||
| 
								 | 
							
								    - weapon : String
							 | 
						||
| 
								 | 
							
								    + OrcMage(orcMage : OrcMage)
							 | 
						||
| 
								 | 
							
								    + OrcMage(weapon : String)
							 | 
						||
| 
								 | 
							
								    + copy() : OrcMage
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class OrcWarlord {
							 | 
						||
| 
								 | 
							
								    - weapon : String
							 | 
						||
| 
								 | 
							
								    + OrcWarlord(orcWarlord : OrcWarlord)
							 | 
						||
| 
								 | 
							
								    + OrcWarlord(weapon : String)
							 | 
						||
| 
								 | 
							
								    + copy() : OrcWarlord
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface Prototype {
							 | 
						||
| 
								 | 
							
								    + copy() : Object {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  abstract class Warlord {
							 | 
						||
| 
								 | 
							
								    + Warlord()
							 | 
						||
| 
								 | 
							
								    + Warlord(source : Warlord)
							 | 
						||
| 
								 | 
							
								    + copy() : Warlord {abstract}
							 | 
						||
| 
								 | 
							
								    + equals(obj : Object) : boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								HeroFactoryImpl -->  "-beast" Beast
							 | 
						||
| 
								 | 
							
								HeroFactoryImpl -->  "-warlord" Warlord
							 | 
						||
| 
								 | 
							
								HeroFactoryImpl -->  "-mage" Mage
							 | 
						||
| 
								 | 
							
								Beast ..|> Prototype 
							 | 
						||
| 
								 | 
							
								ElfBeast --|> Beast 
							 | 
						||
| 
								 | 
							
								ElfMage --|> Mage 
							 | 
						||
| 
								 | 
							
								ElfWarlord --|> Warlord 
							 | 
						||
| 
								 | 
							
								HeroFactoryImpl ..|> HeroFactory 
							 | 
						||
| 
								 | 
							
								Mage ..|> Prototype 
							 | 
						||
| 
								 | 
							
								OrcBeast --|> Beast 
							 | 
						||
| 
								 | 
							
								OrcMage --|> Mage 
							 | 
						||
| 
								 | 
							
								OrcWarlord --|> Warlord 
							 | 
						||
| 
								 | 
							
								Warlord ..|> Prototype 
							 | 
						||
| 
								 | 
							
								@enduml
							 |