zoukankan      html  css  js  c++  java
  • Java 单例模式

    饿汉式  懒汉式

    SingletonOne.java:

    package com.snape.singleton;
    
    /**
     * 饿汉式:创建对象实例时直接初始化.
     * 用空间换时间
     */
    public class SingletonOne {
        //1.创建类中私有构造
        private SingletonOne(){
    
        }
    
        //2.创建该类型的私有静态实例
        private static SingletonOne instance = new SingletonOne();
    
        //3.创建静态公有方法返回静态实例对象
        public static SingletonOne getInstance(){
            return instance;
        }
    }
    View Code

    SingletonTwo.java:

    package com.snape.singleton;
    
    /**
     * 懒汉式:类内实例对象创建时并不直接初始化,直到第一次调用getInstance()方法时才完成初始化操作。
     * 用时间换空间
     */
    public class SingletonTwo {
        //1.创建私有构造方法
        private SingletonTwo(){
    
        }
    
        //2.创建静态的该类实例对象
        private static SingletonTwo instance = null;
    
        //3.创建开放的静态方法提供实例对象。
        public static SingletonTwo getInstance(){
            if(instance==null){
                instance = new SingletonTwo();
            }
            return instance;
        }
    }
    View Code

    Test.java:

    package com.snape.test;
    
    import com.snape.singleton.SingletonOne;
    import com.snape.singleton.SingletonTwo;
    
    public class Test {
        public static void main(String[] args) {
    
            //饿汉式
            SingletonOne one = SingletonOne.getInstance();
            SingletonOne two = SingletonOne.getInstance();
    
            System.out.println(one);
            System.out.println(two);
            System.out.println(one==two);   //结果是true,表明 one 和 two 指向的是同一个对象。
    
            System.out.println("============================================");
    
            //懒汉式
            SingletonTwo one1 = SingletonTwo.getInstance();
            SingletonTwo two1 = SingletonTwo.getInstance();
    
            System.out.println(one1);
            System.out.println(two1);
            System.out.println(one1==two1);     //结果是true,表明 one 和 two 指向的是同一个对象。
        }
    }
    View Code

    结果:

  • 相关阅读:
    编译KlayGE所需要的第三方库和工具下载
    KlayGE启用顶级域名
    Sophus和Eigen 李群李代数 简单介绍
    G2O曲线拟合1
    梯度下降
    PCL1.8单张图点云转换显示
    双目测距demo
    Kinect基于微软SDK彩图与深度图对齐
    单例模式
    zendstudio卡死
  • 原文地址:https://www.cnblogs.com/CPU-Easy/p/12252486.html
Copyright © 2011-2022 走看看