mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-24 06:25:27 +00:00
42 lines
1.0 KiB
Plaintext
42 lines
1.0 KiB
Plaintext
@startuml
|
|
|
|
class Task {
|
|
-id: int
|
|
-totalExecutionTime: int
|
|
-priority: int
|
|
--
|
|
+Task(id: int, totalExecutionTime: int, priority: int)
|
|
+Task(id: int, totalExecutionTime: int)
|
|
+getId(): int
|
|
+getTotalExecutionTime(): int
|
|
+getPriority(): int
|
|
}
|
|
|
|
interface TaskScheduler {
|
|
+scheduleTask(task: Task): void
|
|
+update(int deltaTime): void
|
|
}
|
|
|
|
class FirstComeFirstServedScheduler extends TaskScheduler {}
|
|
class PriorityScheduler extends TaskScheduler {}
|
|
class RoundRobinScheduler extends TaskScheduler {}
|
|
class ShortestRemainingTimeFirstScheduler extends TaskScheduler {}
|
|
|
|
class Simulator {
|
|
-scheduler: TaskScheduler
|
|
-Map<Integer, List<Task>> tasks
|
|
-deltaTime: int
|
|
-simulateTime: int
|
|
-LinkedHashMap<Integer, Integer> taskCompletedOrder
|
|
-elapsedTime: int
|
|
--
|
|
+Simulator(scheduler: TaskScheduler, tasks: Map<Integer, List<Task>>, deltaTime: int, simulateTime: int)
|
|
+simulate(): LinkedHashMap<Integer, Integer>
|
|
}
|
|
|
|
Task -- TaskScheduler : "1..*"
|
|
TaskScheduler -- Simulator : "1"
|
|
Simulator ..> Task : "1..*"
|
|
|
|
@enduml
|