美文网首页
【设计模式(1) Java】单例模式

【设计模式(1) Java】单例模式

作者: 3e1094b2ef7b | 来源:发表于2017-06-29 23:30 被阅读0次

题目:设计一个类,我们只能生成该类的一个实例。

代码如下:

package demo;

public class TestSingleton {
    /**
     * 懒汉式,线程安全
     */
    public static class Singleton1 {
        private static final Singleton1 INSTANCE = new Singleton1();
        private Singleton1() {
        }
        public static Singleton1 getInstance() {
            return INSTANCE;
        }
    }

    /**
     * 懒汉式,变种,线程安全
     */
    public static class Singleton2 {
        private static Singleton2 instance = null;
        static {
            instance = new Singleton2();
        }
        private Singleton2() {
        }
        public static Singleton2 getInstance() {
            return instance;
        }
    }

    /**
     * 饿汉式,线程不安全
     */
    public static class Singleton3 {
        private static Singleton3 instance = null;
        private Singleton3() {
        }
        public static Singleton3 getInstance() {
            if(instance == null) {
                instance = new Singleton3();
            }
            return instance;
        }
    
        /**
         * 饿汉式,线程安全,多线程环境下效率不高
         */
        public static class Singleton4 {
            private static Singleton4 instance = null;
            private Singleton4() {
            }
            public static synchronized Singleton4 getInstance() {
                if(instance == null) {
                    instance = new Singleton4();
                }
                return instance;
            }
        }
    
        /**
         * 使用静态内部类,线程安全
         */
        public static class Singleton5 {
            private static final class SingletonHolder {
                private static final Singleton5 INSTANCE = new Singleton5();
            }
            private Singleton5() {
            }
            public static Singleton5 getInstance() {
                return SingletonHolder.INSTANCE;
            }
        }
    
        /**
         * 静态内部类,使用双重校验锁,线程安全
         */
        public static class Singleton6 {
            private volatile static Singleton6 instance = null;
            private Singleton6() {
            }
            public static Singleton6 getInstance() {
                if(instance == null) {
                    synchronized (Singleton6.class) {
                        if(instance == null) {
                            instance = new Singleton6();
                        }
                    }
                }
                return instance;
            }
        }
    
        /**
         * 静态内部类,使用枚举方式,线程安全
         */
        public enum Singleton7 {
            INSTANCE;
            public void whateverMethon() {
            }
        }
    
    
        public static void main(String[] args) {
            System.out.println(Singleton1.getInstance() == Singleton1.getInstance());
            System.out.println(Singleton2.getInstance() == Singleton2.getInstance());
            System.out.println(Singleton3.getInstance() == Singleton3.getInstance());
            System.out.println(Singleton4.getInstance() == Singleton4.getInstance());
            System.out.println(Singleton5.getInstance() == Singleton5.getInstance());
            System.out.println(Singleton6.getInstance() == Singleton6.getInstance());
            System.out.println(Singleton7.INSTANCE == Singleton7.INSTANCE);
        }
    }
}
运行结果

来源:http://blog.csdn.net/derrantcm/article/details/45330779

相关文章

  • JAVA设计模式 - 单例模式

    JAVA设计模式 - 单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一...

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • Java中单例模式你用的哪一种?

    一起讨论java中的单例模式。单例模式是java设计模式中算是最简单的设计模式了。 * java实现单例模式的写法...

  • 设计模式(二)——创建型模式

    一、 单例模式 1. 什么是单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模...

  • Java四种单例设计模式

    Java中的四种单例模式 单例模式是最容易理解的设计模式之一,介绍Java中单例模式的四种写法。 1.基本单例模式...

  • JAVA设计模式之单例模式

    JAVA设计模式之单例模式

  • 设计模式

    Java 设计模式情景分析 ——单例模式 Java 设计模式情景分析——建造者模式 Java 设计模式情景分析——...

  • 单例模式(Singleton Pattern)

    一、单例模式简介 1. 定义 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,...

  • Java设计模式教程

    Java设计模式教程 Java工厂设计模式 Java抽象工厂模式 Java单例模式 Java建造者(Builder...

  • 设计模式——单例模式

    设计模式——单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,这种类型...

网友评论

      本文标题:【设计模式(1) Java】单例模式

      本文链接:https://www.haomeiwen.com/subject/umavcxtx.html