java-design-patterns/leader-followers/etc/leader-followers.urm.puml
Zhang WH be1c0b8143
Fix issue #179: Leader Followers Pattern (#1189)
* add leader followers pattern

* use var and streams instead in App::execute

* use logger instead of printing to system output stream
2020-03-26 21:14:44 +02:00

54 lines
1.3 KiB
Plaintext

@startuml
package com.iluwatar.leaderfollowers {
class App {
+ App()
- addTasks(taskSet : TaskSet) {static}
- execute(workCenter : WorkCenter, taskSet : TaskSet) {static}
+ main(args : String[]) {static}
}
class Task {
- finished : boolean
- time : int
+ Task(time : int)
+ getTime() : int
+ isFinished() : boolean
+ setFinished()
}
class TaskHandler {
+ TaskHandler()
+ handleTask(task : Task)
}
class TaskSet {
- queue : BlockingQueue<Task>
+ TaskSet()
+ addTask(task : Task)
+ getSize() : int
+ getTask() : Task
}
class WorkCenter {
- leader : Worker
- workers : List<Worker>
+ WorkCenter()
+ addWorker(worker : Worker)
+ createWorkers(numberOfWorkers : int, taskSet : TaskSet, taskHandler : TaskHandler)
+ getLeader() : Worker
+ getWorkers() : List<Worker>
+ promoteLeader()
+ removeWorker(worker : Worker)
}
class Worker {
- id : long
- taskHandler : TaskHandler
- taskSet : TaskSet
- workCenter : WorkCenter
+ Worker(id : long, workCenter : WorkCenter, taskSet : TaskSet, taskHandler : TaskHandler)
+ equals(o : Object) : boolean
+ hashCode() : int
+ run()
}
}
Worker --> "-taskSet" TaskSet
Worker --> "-taskHandler" TaskHandler
TaskSet --> "-queue" Task
Worker --> "-workCenter" WorkCenter
@enduml