zoukankan      html  css  js  c++  java
  • The Java Enum: A Singleton Pattern [reproduced]

    The singleton pattern restricts the instantiation of a class to one object. In Java, to enforce this, the best approach is to use an enum. This great idea comes straight from the book Effective Java by Joshua Bloch. If you don't have it in your library, get it. One of the best Java books to date.

    There are a few reasons why one would use an enum as a singleton in Java:

        -Serialization for free.
        -Guaranteed one instance (Cannot instantiate more then one enum even through reflection.)
        -Thread safe

    /**
     * Example of a Java Singleton.
     * It is suggested to use an enum as a singleton. The Class
     * cannot be instantiated more then once, specifically when
     * using reflection.
     *
     * @author keaplogik
     */
    public enum AnimalHelperSingleton {

        INSTANCE;

        private AnimalHelperSingleton(){

        }

        public Animal[] buildAnimalList(){
            final Animal[] animals = new Animal[10];

            animals[0] = new SimpleAnimal(Animal.AnimalClass.MAMMAL,
                    "Dog", true, Color.GRAY);
            animals[1] = new SimpleAnimal(Animal.AnimalClass.MAMMAL,
                    "Cat", true, Color.YELLOW);
            animals[2] = new SimpleAnimal(Animal.AnimalClass.AMPHIBIAN,
                    "Frog", true, Color.GREEN);
            animals[3] = new SimpleAnimal(Animal.AnimalClass.BIRD,
                    "Crow", true, Color.BLACK);
            animals[4] = new SimpleAnimal(Animal.AnimalClass.BIRD,
                    "Cardinal", true, Color.RED);
            animals[5] = new SimpleAnimal(Animal.AnimalClass.ARTHROPOD,
                    "Mantis", false, Color.GREEN);
            animals[6] = new SimpleAnimal(Animal.AnimalClass.ARTHROPOD,
                    "Spider", false, Color.ORANGE);
            animals[7] = new SimpleAnimal(Animal.AnimalClass.MAMMAL,
                    "Tiger", true, Color.ORANGE);
            animals[8] = new SimpleAnimal(Animal.AnimalClass.MAMMAL,
                    "Bear", true, Color.BLACK);
            animals[9] = new SimpleAnimal(Animal.AnimalClass.BIRD,
                    "Owl", true, Color.BLACK);

            return animals;
        }

    }

    And in use:

    //Call singleton to build the animal list.
    Animal[] animals = AnimalHelperSingleton.INSTANCE.buildAnimalList();

    From:

    http://keaplogik.blogspot.sg/2013/12/the-java-enum-singleton-pattern.html

  • 相关阅读:
    Android开发中完全退出程序的三种方法
    android绑定sqlite数据库与程序一起发布
    Android数据存储方式:SharePreference、SQLite、ContentProvider有什么不同?
    [Android]发布Sqlite数据库
    Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)
    解决Android的ListView控件滚动时背景变黑
    android 获取当前程序路径
    免费的Android UI库及组件推荐
    Android界面特殊全汇总
    Android显示GIF动画 GifView
  • 原文地址:https://www.cnblogs.com/pugang/p/5780504.html
Copyright © 2011-2022 走看看