比较器是新的还是可注射的物体?

use*_*469 5 java tdd unit-testing dependency-injection comparator

查看标题中的问题!你会'注入'或更确切地说'新'比较器吗?如果元素的顺序在规范中设置并且很可能不会改变,你会新建吗?

Tom*_*son 3

问题“我应该注入这种依赖吗?” 实际上是“引用对象应该知道这种依赖关系的本质吗?”。呃,只能否定。

如果你的类是 a FastestPonyFinder,并且它需要按速度对 a 进行排序List<Pony>,那么我会说它应该知道比较器。比较器需要按速度进行比较,将速度最快的排到链表的头部;没有其他比较器适合这项工作。该对象应该创建比较器,就像它创建List.

如果你的类是 a BestPonyFinder,那么它可能应该注入比较器,因为构成“最佳”的定义与如何找到满足它的小马的定义是分开的。这将使您的代码在将来更容易测试和更改。