Sha*_*Sha 5 java oop design-patterns
我的代码如下所示:
enum EnumType {
CATEGORY,
GROUP,
MAIN
}
Run Code Online (Sandbox Code Playgroud)
方法:
public void call(EnumType type){
switch(type):
case CATEGORY:
return methodForCategory();
case GROUP:
return methodForGroup();
...
}
public void methodForCategory(){
... Operations according to EnumType.CATEGORY
}
public void methodForGroup(){
... Operations according to EnumType.GROUP
}
public void methodForMain(){
... Operations according to EnumType.MAIN
}
Run Code Online (Sandbox Code Playgroud)
但是我想在没有开关/情况下调用它,如下所示;
public void call(EnumType type){
methodForType(EnumType type);
}
Run Code Online (Sandbox Code Playgroud)
有可能还是有更好的选择?
您可以在枚举内创建方法实现,如下所示:
public enum EnumType {
CATEGORY {
@Override
public void processMethod() {
// Do something here
}
},
GROUP {
@Override
public void processMethod() {
// Do something here
}
},
MAIN {
@Override
public void processMethod() {
// Do something here
}
};
public abstract void processMethod();
}
Run Code Online (Sandbox Code Playgroud)
并将调用方法实现更新为:
public void call(EnumType type){
type.processMethod();
}
Run Code Online (Sandbox Code Playgroud)
切换代码不应返回任何内容,因为方法的返回类型为void。