47 lines
1.3 KiB
Plaintext
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 |