某个功能或算法有多种实现方式,可以使用策略模式:
枚举类也可以实现策略模式类似的功能:(前提:实现个数固定)
枚举类声明一个抽像的方法,由各个实例去实现。
枚举实例的选择:
1.直接引用Scope.实例名
2.由字符串生成 Scope.valueOf("实例名");
示例:(参考了Struts 2.3.26 的Scope源码)
public enum ScopeFactory {
SINGLETON{
public Object create(Class classz){
return null;
}
},
Thread{
public Object create(Class classz){
return null;
}
},
Request{
public Object create(Class classz){
return null;
}
},
Session{
public Object create(Class classz){
return null;
}
};
public abstract Object create(Class classz);
}