简体   繁体   中英

How to write static class holder idiom singleton

I have to write this code in lazy initialization "static class holder idiom singleton" pattern

 public class DateComparator{
    private static DateComparator instance = null;
    public static  DateComparator getInstance()
    {
       if(instance == null)
          instance = new DateComparator();
       return instance;
    }
 }

This is my changed code:

public class DateComparator{
    private static DateComparator container = null;
    private static class DateComparatorHolder {
        private static DateComparator instance=createInstance();
    }
    private static DateComparator createInstance() {
        if(container == null)
            //container = new DateComparator();
        return new DateComparator();
    }
    public static DateComparator getInstance()
    {       
        return DateComparatorHolder.instance;
    }

No need for the container variable or createInstance() :

public class DateComparator{
    private static class DateComparatorHolder {
        private static final DateComparator instance= new DateComparator();
    }

    public static DateComparator getInstance()
    {       
        return DateComparatorHolder.instance;
    }
}

That's all.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM