java-design-patterns/prototype/etc/prototype.urm.puml
2019-12-07 18:03:49 +02:00

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