89 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| @startuml
 | |
| package com.iluwatar.abstractfactory {
 | |
|   class App {
 | |
|     - LOGGER : Logger {static}
 | |
|     - army : Army
 | |
|     - castle : Castle
 | |
|     - king : King
 | |
|     + App()
 | |
|     + createKingdom(factory : KingdomFactory)
 | |
|     + getArmy() : Army
 | |
|     ~ getArmy(factory : KingdomFactory) : Army
 | |
|     + getCastle() : Castle
 | |
|     ~ getCastle(factory : KingdomFactory) : Castle
 | |
|     + getKing() : King
 | |
|     ~ getKing(factory : KingdomFactory) : King
 | |
|     + main(args : String[]) {static}
 | |
|     - setArmy(army : Army)
 | |
|     - setCastle(castle : Castle)
 | |
|     - setKing(king : King)
 | |
|   }
 | |
|   interface Army {
 | |
|     + getDescription() : String {abstract}
 | |
|   }
 | |
|   interface Castle {
 | |
|     + getDescription() : String {abstract}
 | |
|   }
 | |
|   class ElfArmy {
 | |
|     ~ DESCRIPTION : String {static}
 | |
|     + ElfArmy()
 | |
|     + getDescription() : String
 | |
|   }
 | |
|   class ElfCastle {
 | |
|     ~ DESCRIPTION : String {static}
 | |
|     + ElfCastle()
 | |
|     + getDescription() : String
 | |
|   }
 | |
|   class ElfKing {
 | |
|     ~ DESCRIPTION : String {static}
 | |
|     + ElfKing()
 | |
|     + getDescription() : String
 | |
|   }
 | |
|   class ElfKingdomFactory {
 | |
|     + ElfKingdomFactory()
 | |
|     + createArmy() : Army
 | |
|     + createCastle() : Castle
 | |
|     + createKing() : King
 | |
|   }
 | |
|   interface King {
 | |
|     + getDescription() : String {abstract}
 | |
|   }
 | |
|   interface KingdomFactory {
 | |
|     + createArmy() : Army {abstract}
 | |
|     + createCastle() : Castle {abstract}
 | |
|     + createKing() : King {abstract}
 | |
|   }
 | |
|   class OrcArmy {
 | |
|     ~ DESCRIPTION : String {static}
 | |
|     + OrcArmy()
 | |
|     + getDescription() : String
 | |
|   }
 | |
|   class OrcCastle {
 | |
|     ~ DESCRIPTION : String {static}
 | |
|     + OrcCastle()
 | |
|     + getDescription() : String
 | |
|   }
 | |
|   class OrcKing {
 | |
|     ~ DESCRIPTION : String {static}
 | |
|     + OrcKing()
 | |
|     + getDescription() : String
 | |
|   }
 | |
|   class OrcKingdomFactory {
 | |
|     + OrcKingdomFactory()
 | |
|     + createArmy() : Army
 | |
|     + createCastle() : Castle
 | |
|     + createKing() : King
 | |
|   }
 | |
| }
 | |
| App -->  "-castle" Castle
 | |
| App -->  "-king" King
 | |
| App -->  "-army" Army
 | |
| ElfArmy ..|> Army 
 | |
| ElfCastle ..|> Castle 
 | |
| ElfKing ..|> King 
 | |
| ElfKingdomFactory ..|> KingdomFactory 
 | |
| OrcArmy ..|> Army 
 | |
| OrcCastle ..|> Castle 
 | |
| OrcKing ..|> King 
 | |
| OrcKingdomFactory ..|> KingdomFactory 
 | |
| @enduml |