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、资源加载和性能
    饿汉式在类创建的同时就实例化一个静态对象出来,不管你调不调用,都会占据内存了,但是第一调用时,也会比懒汉式快,因为资源被初始化了
    懒汉式,其实也恰恰和饿汉式相反,会在第一次调用实例对象出来,要初始化,性能行会延迟。

  • 相关阅读:
    使用RF(robotframework)要安装哪些库
    MYSQL题目练习专用
    MySQL字段拼接
    WPF样式
    WPF数据模板
    WPF控件模板
    WPF布局
    面向对象程序设计原则
    设计模式之策略模式
    设计模式之简单工厂模式
  • 原文地址:https://www.cnblogs.com/Libbo/p/9966590.html
Copyright © 2011-2022 走看看