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

    一、作用:

    保证整个应用程序中某个实例有且只有一个。

    二、实现方式:

    饿汉式实现

    ⑴、将构造方法私有化,不允许外部直接创建对象;

    ⑵、创建类的唯一实例,使用private static修饰

    ⑶、提供一个用于获取实例的方法,使用public static修饰

    public class Singleton {
    
    	private Singleton(){		
    	}
    	
    	private static Singleton instance=new Singleton();
    	
    	public static Singleton getInstance(){
    		return instance;
    	}
    }

    懒汉式实现

    public class Singleton2 {
    
    	private Singleton2(){
    	}
    	
    	private static Singleton2 instance;
    	
    	public static Singleton2 getInstance(){
    		if(instance==null){
    			instance=new Singleton2();
    		}
    		return instance;
    	}
    }
    

    三、使用区别

    饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。
    如果在构造方法里写了性能消耗较大,占时较久的代码,比如建立与数据库的连接,那么就会在启动的时候感觉稍微有些卡顿。

    懒汉式,是延迟加载的方式,只有使用的时候才会加载。 并且有线程安全的考量(鉴于同学们学习的进度,暂时不对线程的章节做展开)。
    使用懒汉式,在启动的时候,会感觉到比饿汉式略快,因为并没有做对象的实例化。 但是在第一次调用的时候,会进行实例化操作,感觉上就略慢。

    看业务需求,如果业务上允许有比较充分的启动和初始化时间,就使用饿汉式,否则就使用懒汉式。

    面试回答:

    1. 构造方法私有化
    2. 静态属性指向实例
    3. public static的 getInstance方法,返回第二步的静态属性

  • 相关阅读:
    用fiddler测试ip轮询
    ubuntu下安装fiddler
    Andriod相机开发关于startPreview Failed的错误的特别记录(重要)
    我的Cocos2dx开发模式
    Android WebView导入HTML使Js生效的方法
    Lua快捷键
    String,StringBuilder,StringBuffer的对比测试
    重构视角(摘抄)
    String属于“假引用类型”,代码为证(一个String引发的血案...)
    static class
  • 原文地址:https://www.cnblogs.com/darklights/p/11832744.html
Copyright © 2011-2022 走看看