java-design-patterns/prototype/etc/prototype.urm.puml

81 lines
1.7 KiB
Plaintext
Raw Normal View History

@startuml
package com.iluwatar.prototype {
class OrcWarlord {
+ OrcWarlord()
+ clone() : Warlord
+ toString() : String
}
class OrcBeast {
+ OrcBeast()
+ clone() : Beast
+ toString() : String
}
abstract class Beast {
+ Beast()
+ clone() : Beast {abstract}
}
class ElfMage {
+ ElfMage()
+ clone() : Mage
+ toString() : String
}
abstract class Mage {
+ Mage()
+ clone() : Mage {abstract}
}
abstract class Prototype {
+ Prototype()
+ clone() : Object {abstract}
}
interface HeroFactory {
+ createBeast() : Beast {abstract}
+ createMage() : Mage {abstract}
+ createWarlord() : Warlord {abstract}
}
class ElfWarlord {
+ ElfWarlord()
+ clone() : Warlord
+ toString() : String
}
class OrcMage {
+ OrcMage()
+ clone() : Mage
+ toString() : String
}
class ElfBeast {
+ ElfBeast()
+ clone() : Beast
+ toString() : String
}
abstract class Warlord {
+ Warlord()
+ clone() : Warlord {abstract}
}
class HeroFactoryImpl {
- beast : Beast
- mage : Mage
- warlord : Warlord
+ HeroFactoryImpl(mage : Mage, warlord : Warlord, beast : Beast)
+ createBeast() : Beast
+ createMage() : Mage
+ createWarlord() : Warlord
}
class App {
+ App()
+ main(args : String[]) {static}
}
}
HeroFactoryImpl --> "-beast" Beast
HeroFactoryImpl --> "-warlord" Warlord
HeroFactoryImpl --> "-mage" Mage
OrcWarlord --|> Warlord
OrcBeast --|> Beast
Beast --|> Prototype
ElfMage --|> Mage
Mage --|> Prototype
ElfWarlord --|> Warlord
OrcMage --|> Mage
ElfBeast --|> Beast
Warlord --|> Prototype
HeroFactoryImpl ..|> HeroFactory
@enduml