上一篇:教你借助设计模式限制实例化数量 | 带你学《Java面向对象编程》之七十三
【本节目标】
通过阅读本节内容,你将了解到限制实例化数量的另一种思路-枚举类,学会通过定义枚举类完成特殊的需求、应对复杂的场景。
很多的编程语言都会提供有枚举的概念,但是Java一直到JDK1.5之后才提出了所谓枚举的概念。在实际的开发之中,枚举的主要作用是用于定义有限个数对象的一种结构(多例设计),枚举就属于多例设计,并且其结构要比多例设计更加简单。
枚举的基本定义
从JDK1.5之后,在程序之中提供有enum的关键字,利用此关键字可以实现枚举的定义。
范例:定义一个枚举
1、
enum Color { //枚举类
RED,GREEN, BLUE ; //实例化对象
}
public class JavaDemo{
public static void main(String args[]) {
Color c =Color.RED ; //获取实例化对象
System.out.println(c) ;
} // RED
}
2、
enum Color { //枚举类
红色, 绿色, 蓝色 ; //实例化对象
}
public class JavaDemo{
public static void main(String args[]) {
Color c =Color.红色 ; //获取实例化对象
System.out.println(c) ;
} // 红色
}
如果此时采用的多例设计模式来进行设计,那么需要编写很多程序代码,这样对于开发的复杂度是比较高的。因为里面牵扯到了构造方法私有化以及静态方法。
多例设计与枚举设计虽然可以实现相同的功能,但是使用枚举可以在程序编译的时候就判断所使用的实例化对象是否存在。
在进行枚举处理的时候还可以利用values()方法获取所有的枚举对象进行输出。
范例:获取所有的枚举对象
enum Color { //枚举类
RED,GREEN, BLUE ; //实例化对象
}
public class JavaDemo{
public static void main(String args[]) {
for (Color c : color.values()) {
System.out.println(c) ;
} //RED GREEN BLUE
}
}
如果此时同样的功能需要通过多例设计来解决的话,那么就需要使用对象数组了。
从JDK1.5追加了枚举结构之后,就可以在switch之中进行枚举项的判断。
范例:观察枚举与switch处理
enum Color { //枚举类
RED,GREEN, BLUE ; //实例化对象
}
public class JavaDemo{
public static void main(String args[]) {
Color c = Color.RED ;
switch(c) { //直接支持枚举
case RED :
System.out.println("红色") ;
break ;
case GREEN :
System.out.println("绿色") ;
break ;
case BLUE :
System.out.println("蓝色") ;
break ;
} //红色
}
}
多例上是无法实现这种与switch直接连接的,多例要想实现它就需要编写大量的if判断了。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学