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 |