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 |