2016-08-30 13:29:12 +02:00
|
|
|
@startuml
|
|
|
|
package com.iluwatar.prototype {
|
2016-11-26 12:51:06 +01:00
|
|
|
class App {
|
|
|
|
- LOGGER : Logger {static}
|
|
|
|
+ App()
|
|
|
|
+ main(args : String[]) {static}
|
2016-08-30 13:29:12 +02:00
|
|
|
}
|
2016-09-18 17:51:09 +03:00
|
|
|
abstract class Beast {
|
|
|
|
+ Beast()
|
|
|
|
+ clone() : Beast {abstract}
|
2016-08-30 13:29:12 +02:00
|
|
|
}
|
2016-11-26 12:51:06 +01:00
|
|
|
class ElfBeast {
|
|
|
|
+ ElfBeast()
|
|
|
|
+ clone() : Beast
|
|
|
|
+ toString() : String
|
|
|
|
}
|
2016-08-30 13:29:12 +02:00
|
|
|
class ElfMage {
|
|
|
|
+ ElfMage()
|
|
|
|
+ clone() : Mage
|
|
|
|
+ toString() : String
|
|
|
|
}
|
2016-11-26 12:51:06 +01:00
|
|
|
class ElfWarlord {
|
|
|
|
+ ElfWarlord()
|
|
|
|
+ clone() : Warlord
|
|
|
|
+ toString() : String
|
2016-08-30 13:29:12 +02:00
|
|
|
}
|
2016-09-18 17:51:09 +03:00
|
|
|
interface HeroFactory {
|
|
|
|
+ createBeast() : Beast {abstract}
|
|
|
|
+ createMage() : Mage {abstract}
|
|
|
|
+ createWarlord() : Warlord {abstract}
|
2016-08-30 13:29:12 +02:00
|
|
|
}
|
2016-11-26 12:51:06 +01:00
|
|
|
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()
|
|
|
|
+ clone() : Mage {abstract}
|
|
|
|
}
|
|
|
|
class OrcBeast {
|
|
|
|
+ OrcBeast()
|
|
|
|
+ clone() : Beast
|
2016-08-30 13:29:12 +02:00
|
|
|
+ toString() : String
|
|
|
|
}
|
|
|
|
class OrcMage {
|
|
|
|
+ OrcMage()
|
|
|
|
+ clone() : Mage
|
|
|
|
+ toString() : String
|
|
|
|
}
|
2016-11-26 12:51:06 +01:00
|
|
|
class OrcWarlord {
|
|
|
|
+ OrcWarlord()
|
|
|
|
+ clone() : Warlord
|
2016-08-30 13:29:12 +02:00
|
|
|
+ toString() : String
|
|
|
|
}
|
2016-11-26 12:51:06 +01:00
|
|
|
abstract class Prototype {
|
|
|
|
+ Prototype()
|
|
|
|
+ clone() : Object {abstract}
|
|
|
|
}
|
2016-09-18 17:51:09 +03:00
|
|
|
abstract class Warlord {
|
|
|
|
+ Warlord()
|
|
|
|
+ clone() : Warlord {abstract}
|
|
|
|
}
|
2016-08-30 13:29:12 +02:00
|
|
|
}
|
|
|
|
HeroFactoryImpl --> "-beast" Beast
|
|
|
|
HeroFactoryImpl --> "-warlord" Warlord
|
|
|
|
HeroFactoryImpl --> "-mage" Mage
|
2016-09-18 17:51:09 +03:00
|
|
|
Beast --|> Prototype
|
2016-11-26 12:51:06 +01:00
|
|
|
ElfBeast --|> Beast
|
2016-08-30 13:29:12 +02:00
|
|
|
ElfMage --|> Mage
|
|
|
|
ElfWarlord --|> Warlord
|
2016-11-26 12:51:06 +01:00
|
|
|
HeroFactoryImpl ..|> HeroFactory
|
|
|
|
Mage --|> Prototype
|
|
|
|
OrcBeast --|> Beast
|
2016-08-30 13:29:12 +02:00
|
|
|
OrcMage --|> Mage
|
2016-11-26 12:51:06 +01:00
|
|
|
OrcWarlord --|> Warlord
|
2016-09-18 17:51:09 +03:00
|
|
|
Warlord --|> Prototype
|
2016-08-30 13:29:12 +02:00
|
|
|
@enduml
|