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

      所谓单例模式,就是整个应用中会让某个实例只有一个。

      单例模式有饿汉模式和懒汉模式两种,懒汉模式加载类时比较快,因为加载类的时候不会使用构造器,而饿汉模式加载类时就会直接使用构造器获取一个对象。但是这样运行时获取对象的速度饿汉模式就会更快些,因为他已经加载好了,直接获取即可。

    MySingleton.java
    
    package com.muggle.MySin;
    //恶汉模式
    public class MySingleton {
        private MySingleton() {
            // TODO Auto-generated constructor stub
        }
        
        private static MySingleton instance=new MySingleton();
        
        public static MySingleton getInsatance() {
            return instance;
        }
    }
    
    
    MySingleton2.java
    package com.muggle.MySin;
    //懒汉模式
    public class MySingleton2 {
        private  MySingleton2() {
            // TODO Auto-generated constructor stub
        } 
        
        private static MySingleton2 instance;
        
        public static MySingleton2 getInstance() {
            if(instance==null) {
                instance=new MySingleton2();
            }
            return instance;
        }
        
        
    }
    
    
    TestDrive.java
    package com.muggle.MySin;
    
    public class TestDrive {
    
        public static void main(String[] args) {
            MySingleton s1=MySingleton.getInsatance();
            MySingleton s2=MySingleton.getInsatance();
            if(s1==s2) {
                System.out.println("------这是饿汉模式!----");
            }
            System.out.println(s1);
            System.out.println(s2);
            
            MySingleton2 s3=MySingleton2.getInstance();
            MySingleton2 s4=MySingleton2.getInstance();
            if(s3==s4) {
                System.out.println("------这是懒汉模式!----");
            }
            System.out.println(s3);
            System.out.println(s4);
    
        }
    
    }

    输出如下:

    ------这是饿汉模式!----
    com.muggle.MySin.MySingleton@70dea4e
    com.muggle.MySin.MySingleton@70dea4e
    ------这是懒汉模式!----
    com.muggle.MySin.MySingleton2@5c647e05
    com.muggle.MySin.MySingleton2@5c647e05

      代码运行后发现s1和s2,s3和s4时同一个对象,也是实现了单例模式。

  • 相关阅读:
    select()函数用法二
    fcntl函数的用法总结
    O_NONBLOCK与O_NDELAY有何不同?
    struct termios结构体详解
    select()函数用法一
    linux下的struct sigaction
    sigaction 用法实例
    nand flash 的oob 及坏块管理
    wifi两种工作模式
    UBIFS文件系统简介 与 利用mkfs.ubifs和ubinize两个工具制作UBI镜像 (完整理解版本)
  • 原文地址:https://www.cnblogs.com/mugglean/p/8887869.html
Copyright © 2011-2022 走看看