gpt4 book ai didi

Java:使用单例和泛型进行设计

转载 作者:搜寻专家 更新时间:2023-11-01 01:07:24 25 4
gpt4 key购买 nike

我正在使用一个名为 Predicate 的接口(interface),用于筛选集合。例如,我可以定义

public class BlackCatPredicate implements Predicate<Cat> {
public boolean evaluate( Cat c ) {
return c.isBlack();
}
}

然后使用一些实用程序 findAll( Collection<T> coll, Predicate<T> pred)方法将谓词应用于猫的集合,并只得到黑色的,等等。

我的问题是:我发现我的代码中到处都是黑猫,所以没有必要一遍又一遍地实例化 BlackCatPredicate。它应该只有一个实例。 (单例?)但是,在编写许多谓词的过程中,我不想将每个谓词都实现为单例。那么 - 这里的正确设计是什么?

最佳答案

我会使用匿名类常量并将其与它操作的类放在一起:

public class Cat{
public static final Predicate<Cat> BLACK_PREDICATE = new Predicate<Cat>(){
public boolean evaluate( Cat c ) {
return c.isBlack();
}
};

// Rest of the Cat class goes here
}

如果谓词有参数,可以使用静态工厂方法。

编辑:正如评论中指出的那样,根据使用模式,它可能会导致更清晰的代码在单独的类中收集谓词常量(和/或工厂方法),要么仅适用于 Cat 的,或所有的。这主要取决于它们的数量,多少额外的组织是有帮助的。

关于Java:使用单例和泛型进行设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com