我有我需要分成三组MyObjects列表:OO模式
- 已知良好(保持)
- 已知不良(拒绝)
- 无法识别(提高警报)
为MyObject包含必须进行检查,以确定哪一个3组,使对象在各种性能。
我的初始实现(Java)只是在其构造函数中接受一个List并在那里进行分类。伪代码:
class MyObjectFilterer {
public MyObjectFilterer(List<MyObject> list) {
// triage items here
}
public List<MyObject> getGood() {
// return sub-list of good items
}
public List<MyObject> getBad() {
// return sub-list of bad items
}
public List<MyObject> getUnrecognized() {
// return sub-list of unrecognized items
}
}
此实施的任何问题?有更好的OO选择吗?
我知道你是一个有点向下过度使用或错误使用番石榴功能范式,但作为番石榴团队的一员,你不会建议使用Predicate's和'Iterables.filter的'() '? – 2012-04-09 16:54:53
绝对不是。对于初学者,OP希望将列表分成三个不同的类别。即使使用'Iterables.filter' - OP将使用'Predicate's,而不是'Function',并且记住没有'Lists.filter'方法 - 这需要三次遍历目标列表,而不是一个单一的。功能性成语不仅会降低可读性,而且会严重降低效率。 – 2012-04-09 16:57:32
在我看到您的回复之前,我正忙于编辑我的帖子以使用Predicates。我明白你的观点,因为它适用于直接询问的问题。我想我正在考虑这个问题背后的可能性。目标实际上是有三个物理集合还是目标是有必要根据需要对单个集合中的每个元素进行分类?如果后者,那么建议使用Predicates作为分布式分类器仍然不合适,如果您不想将逻辑添加到被分类的对象中? – 2012-04-09 17:08:10