101 lines
2.4 KiB
Plaintext
101 lines
2.4 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)
|
|
}
|
|
class FactoryMaker {
|
|
+ FactoryMaker()
|
|
+ makeFactory(type : KingdomType) : KingdomFactory {static}
|
|
}
|
|
enum KingdomType {
|
|
+ ELF {static}
|
|
+ ORC {static}
|
|
+ valueOf(name : String) : KingdomType {static}
|
|
+ values() : KingdomType[] {static}
|
|
}
|
|
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
|
|
}
|
|
}
|
|
KingdomType ..+ FactoryMaker
|
|
App --> "-castle" Castle
|
|
FactoryMaker ..+ App
|
|
App --> "-king" King
|
|
App --> "-army" Army
|
|
ElfArmy ..|> Army
|
|
ElfCastle ..|> Castle
|
|
ElfKing ..|> King
|
|
ElfKingdomFactory ..|> KingdomFactory
|
|
OrcArmy ..|> Army
|
|
OrcCastle ..|> Castle
|
|
OrcKing ..|> King
|
|
OrcKingdomFactory ..|> KingdomFactory
|
|
@enduml |