Will_Beethoven 2015-05-12 17:00 采纳率: 57.1%
浏览 2448

java 关于在多态里用循环判断调用枚举类型,在枚举类型数量多的情况下我想寻求更简便的处理方式

//enum GetWheels.java

public enum GetWheels{
ONE_WHEEL,TWO_WHEELS,THREE_WHEELS;
}

//Cycle.java

class Cycle{
public void wheel(GetWheels g){
System.out.println("Cycle.wheel() "+g);
}
}

//RideCycle

import static will.Print.*;
class Unicycle extends Cycle{
public void wheel(GetWheels g){
print("Unicyle.wheel() "+g);
}
}
class Bicycle extends Cycle{
public void wheel(GetWheels g){
print("Bicycle.wheel() "+g);
}
}
class Tricycle extends Cycle{
public void wheel(GetWheels g){
print("Tricycle.wheel() "+g);
}
}
public class RideCycle{
public static void ride(Cycle c,int i){

//那么当枚举类型出现很多种还要用switch吗?

//寻求更简便方法

switch(i){
case 1: c.wheel(GetWheels.ONE_WHEEL);
    break;
case 2: c.wheel(GetWheels.TWO_WHEELS);
    break;
case 3: c.wheel(GetWheels.THREE_WHEELS);
    break;
default: print("No cycle here");
}

}
public static void main(String[] args){
Unicycle one = new Unicycle();
Bicycle two = new Bicycle();
Tricycle three = new Tricycle();
ride(one,1);
ride(two,2);
ride(three,3);
}
}

  • 写回答

2条回答 默认 最新

  • 毕小宝 领域专家: 后端开发技术领域 2015-05-13 00:34
    关注

    可以考虑用设计模式重构这段代码,解决switch分支过多的问题可以使用状态模式。
    参考http://blog.csdn.net/hguisu/article/details/7557252。
    祝好!

    评论

报告相同问题?