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

    第一次写,有不足之处可以点出来,互相交流~~
    什么是单例模式?
    单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。
    单例模式分类:懒汉式单例、饿汉式单例
    单例模式的特点:
    1、单例类之呢个有一个实例。
    2、单例类必须自己创建自己的唯一实例。
    3、单例类必须给所有其他对象提供这一实例。

    ①饿汉式单例
    //饿汉式单例类,在类初始化时,已经自行实例化

    public class Singleton {
    	private Singleton() {
    	}
    	private static final Singleton single = new Singleton();
    	// 静态工厂方法
    	public static Singleton getInstance() {
    		return single;
    	}
    }
    
    public class test {
    	public static void main(String[] args) {
    		Singleton sl1 = Singleton.getInstance();
    		Singleton sl2 = Singleton.getInstance();
    		System.out.println((sl1 == sl1) + "-");
    	}
    }
    

    ②懒汉式单例
    //懒汉式单例类.在第一次调用的时候实例化自己

     public class Singleton1 {
    	private Singleton1() {
    	}
    	private static Singleton1 single=null;
    	// 静态工厂方法
    	public static Singleton1 getInstance() {
    		if(single == null) {
    			single = new Singleton1();
    		}
    		return single;
    	}
    }
    
    public class test {
    	public static void main(String[] args) {
    		Singleton sl1 = Singleton.getInstance();
    		Singleton sl2 = Singleton.getInstance();
    		System.out.println((sl1 == sl1) + "-");
    	}
    }
    

    饿汉式与懒汉式的区别:
    饿汉式就是类一旦加载,就把单列初始化完成,保证getInstance的时候,单例就已经存在了。
    懒汉式就是当调用genInstance的时候,才会去初始化这个单例.
    其实还可以用以下两中方式区分:
    1、线程安全方面:
    饿汉式天生就是线程安全的,可以直接 用于多线程而不出现问题,而懒汉式本身就是非线程安全的。
    2、资源加载和性能
    饿汉式在类创建的同时就实例化一个静态对象出来,不管你调不调用,都会占据内存了,但是第一调用时,也会比懒汉式快,因为资源被初始化了
    懒汉式,其实也恰恰和饿汉式相反,会在第一次调用实例对象出来,要初始化,性能行会延迟。

  • 相关阅读:
    Xshell4连接,Linux系统中文显示乱码解决办法
    Linux系统英文切换中文
    解决VM安装VMTools后错误提示,实现文件共享
    v
    如何安装VM Tool软件包
    Jbpm工作流表补数记录
    【转】Informix数据表结构分析资料整理之约束查询代码
    storm源码之storm代码结构【译】
    Python学习笔记第一天
    python 连接 redis cluster 集群二种方法
  • 原文地址:https://www.cnblogs.com/Libbo/p/9966590.html
Copyright © 2011-2022 走看看