迅速了解多例模式竞争者-枚举 | 带你学《Java面向对象编程》之七十四

简介: 本节向读者展示了其他实现有限个数量实例的办法-定义枚举类,并详细介绍了调用方法以及枚举较多例设计模式的不同。

上一篇:教你借助设计模式限制实例化数量 | 带你学《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的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:全能的枚举类 | 带你学《Java面向对象编程》之七十五
更多Java面向对象编程文章查看此处

相关文章
|
4月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
42 7
|
4月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
49 5
|
1月前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
112 60
|
4月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
3月前
|
安全 Java 索引
Java——反射&枚举
本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
67 9
Java——反射&枚举
|
3月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
86 5
|
3月前
|
安全 Java 开发者
Java 枚举(enum)详解
Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
|
3月前
|
存储 Java 开发者
【Java新纪元启航】JDK 22:解锁未命名变量与模式,让代码更简洁,思维更自由!
【9月更文挑战第7天】JDK 22带来的未命名变量与模式匹配的结合,是Java编程语言发展历程中的一个重要里程碑。它不仅简化了代码,提高了开发效率,更重要的是,它激发了我们对Java编程的新思考,让我们有机会以更加自由、更加创造性的方式解决问题。随着Java生态系统的不断演进,我们有理由相信,未来的Java将更加灵活、更加强大,为开发者们提供更加广阔的舞台。让我们携手并进,共同迎接Java新纪元的到来!
68 11
|
3月前
|
设计模式 Java
Java设计模式-工厂方法模式(4)
Java设计模式-工厂方法模式(4)
|
4月前
|
消息中间件 Java
【实战揭秘】如何运用Java发布-订阅模式,打造高效响应式天气预报App?
【8月更文挑战第30天】发布-订阅模式是一种消息通信模型,发送者将消息发布到公共队列,接收者自行订阅并处理。此模式降低了对象间的耦合度,使系统更灵活、可扩展。例如,在天气预报应用中,`WeatherEventPublisher` 类作为发布者收集天气数据并通知订阅者(如 `TemperatureDisplay` 和 `HumidityDisplay`),实现组件间的解耦和动态更新。这种方式适用于事件驱动的应用,提高了系统的扩展性和可维护性。
74 2