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

  • 相关阅读:
    WCF里几个基本知识点
    MVC3+EntityFramework实践笔记
    一些vim的插件和配置
    Web API工作方式
    计算机中的异常
    Glusterfs之nfs模块源码分析
    ASP.NET Windows身份认证
    Sql Server表结构及索引辅助查看工具
    sql server批量插入与更新两种解决方案
    如何在ViewModel中正确地使用Timer(定时器)
  • 原文地址:https://www.cnblogs.com/pugang/p/5780504.html
Copyright © 2011-2022 走看看