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时同一个对象,也是实现了单例模式。

  • 相关阅读:
    offsetLeft,Left,clientLeft的区别
    IIS 内部运行机制
    常用正则表达式
    千万不要把 bool 设计成函数参数
    ASP.NET第一课,IIS安装与配置
    将字符串转为变量名(C#)
    淘宝技术发展
    C# 反射机制
    技术普及帖:你刚才在淘宝上买了一件东西
    高性能分布式计算与存储系统设计概要——暨2012年工作3年半总结
  • 原文地址:https://www.cnblogs.com/mugglean/p/8887869.html
Copyright © 2011-2022 走看看