在哪里决定应该从缓存中逐出什么项目?

Where to decide what item should be evicted from cache?

当缓存的大小达到容量时,决定应该驱逐什么的函数应该位于缓存 class 中,还是应该作为参数传递给缓存 class是初始化吗?

好问题。如果应用单一职责原则,注入驱逐逻辑是有意义的。所以缓存对象负责缓存,注入的驱逐function/class负责驱逐逻辑。这样您就可以通过多种逐出策略重用缓存。