天天看點

迅速了解多例模式競争者-枚舉 | 帶你學《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面向對象程式設計文章檢視此處