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

47 lines
1.3 KiB
Plaintext

@startuml
package com.iluwatar.ambassador.util {
interface RandomProvider {
+ random() : double {abstract}
}
}
package com.iluwatar.ambassador {
class App {
+ App()
+ main(args : String[]) {static}
}
class Client {
- LOGGER : Logger {static}
- serviceAmbassador : ServiceAmbassador
+ Client()
~ useService(value : int) : long
}
class RemoteService {
- LOGGER : Logger {static}
- THRESHOLD : int {static}
- randomProvider : RandomProvider
- service : RemoteService {static}
- RemoteService()
~ RemoteService(randomProvider : RandomProvider)
+ doRemoteFunction(value : int) : long
~ getRemoteService() : RemoteService {static}
}
~interface RemoteServiceInterface {
+ FAILURE : int {static}
+ doRemoteFunction(int) : long {abstract}
}
class ServiceAmbassador {
- DELAY_MS : int {static}
- LOGGER : Logger {static}
- RETRIES : int {static}
~ ServiceAmbassador()
- checkLatency(value : int) : long
+ doRemoteFunction(value : int) : long
- safeCall(value : int) : long
}
}
RemoteService --> "-service" RemoteService
Client --> "-serviceAmbassador" ServiceAmbassador
RemoteService --> "-randomProvider" RandomProvider
RemoteService ..|> RemoteServiceInterface
ServiceAmbassador ..|> RemoteServiceInterface
@enduml