我有一个对我来说很奇怪的枚举。
enum PoolType {
FIXED(4),
CACHED,
SINGLE;
private int threadsAmount;
private PoolType(int threadsAmount) {
this.threadsAmount = threadsAmount;
}
private PoolType() {
}
public int getThreadsAmount() {
return threadsAmount;
}
public PoolType withThreads(int threadsAmount) {
this.threadsAmount = threadsAmount;
return this;
}
}
其实我想知道设计是否可以,还是有些错误?
聚苯乙烯
我以这种方式使用它
new ExecutionStarter(PoolType.CACHED.withThreads(5));
最佳答案
如果需要修改线程数,则需要两个类。
可以配置其线程的Pool,以及可以是枚举的PoolType。
由于枚举仅提供类型处理,因此最好通过枚举模式放弃类型委托。而是直接使用Java类型系统
public interface Pool ...
public class FixedPool implements Pool ...
... etc ...
这样,您可以拥有两个不同线程大小的固定池。