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。
    祝好!

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)