Design
RelationShip
Interface implementation
通过对上图的分析,可以知道 Type 实例中三个容器的作用如下:
- queue: 保存任意类型实例,其中保存的对象不存在有相同内容的对象在 dirty 或 processing 中
- processing: 对象正在处理中,处理完成后移除
- dirty: 与要添加的对象内容相同的对象正在处理中
DelayingInterface
- 添加对象时,如果延时条件已达成,直接进入 Queue
- 延时条件未达成,进入 waitForPriorityQueue,其满足 Heap 接口,没进入一个对象,都会以延迟到达的绝对时刻进行重排
- 如果 waitForPriorityQueue 的“最小元素”不满足延时条件,其他不可能满足延时条件
RateLimiter
- MaxOfRateLimiter 是 RateLimiter 的 Controller,包含了一个 RateLimiter 列表,可填入随意数量的 RateLimiter 具体实现
- MaxOfRateLimiter 本身也是 RateLimiter,其实现方法是使用全部存储的 RateLimiter 分别调用同名方法
- MaxOfRateLimiter 中保存的独立的 RateLimiter 可提供不完整的 RateLimiter 能力,由其他 RateLimiter 补足