Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 让全班同学意识到这一点是否被认为是好的';s型?_Java_Oop - Fatal编程技术网

Java 让全班同学意识到这一点是否被认为是好的';s型?

Java 让全班同学意识到这一点是否被认为是好的';s型?,java,oop,Java,Oop,我有以下界面: public enum AggregatorType{ DATA_BASE, GLOBAL_CACHE, //etc } public interface DataAggregator<T>{ public AggregatorType getType(); public Collection<T> getData(); } public enum AggregatorType{ 数据库, 全局缓存,

我有以下界面:

public enum AggregatorType{
    DATA_BASE,
    GLOBAL_CACHE,
    //etc
}

public interface DataAggregator<T>{

     public AggregatorType getType();

     public Collection<T> getData();

}
public enum AggregatorType{
数据库,
全局缓存,
//等
}
公共接口数据聚合器{
公共聚合类型getType();
公共收集getData();
}

我的问题是在同一个枚举中放置不同的类型。对我来说,它闻起来至少不是一件好事(因为两种不同的类型放在同一个地方)。但我看不出这会导致什么潜在问题。您能帮我理解吗?

通常使用
enum
类型来显式定义类的类型不是一个好的做法,因为在代码的其他部分,您需要在该类型上有一个控制结构(如果有/切换大小写),以分离聚合方式


如果我是你,我会在这个界面中放置一个
aggregate
方法,我会让多态性机制为我发挥魔力
DataBaseAggregator
CacheAggregator
可用于此接口的实现,以定义这些数据聚合中的不同行为

这比instanceof有什么好处?@TobiaTesan不,instanceof不是一个解决方案,因为我不知道聚合器的实际类型。我有点困惑。你能描述一下你的用例吗,也许可以举个例子?我强烈怀疑你不需要它。也可能有帮助:)OOP中对象的枚举类型通常很难闻;大多数情况下,这最好通过继承或公共接口来解决。@TobiaTesan这仅用于将不同的聚合器拆分为不同的组。聚合器返回数据,然后我将找到它们的交集。