zoukankan      html  css  js  c++  java
  • 单例模式面试题(特点、理解)

    帮同事出面试题,为难之际、又逢人指点,现整理如下


    (1)单例模式特点(什么是单例模式)?
     a.单例类只能有一个实例。
     b.单例类必须自己创建自己的唯一实例。
     c.单例类必须给所有其他对象提供这一实例。


    (2)单例模式的作用(用单例模式的目的)?
    Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

    (3)一般Singleton模式通常有几种种形式:
    通常有3中形式(回答2种的也对,因为第3种不常见)
    第一种形式: 饿汉式单例类
     //饿汉式单例类.在类初始化时,已经自行实例化 
    public class Singleton {
         private Singleton(){}
       private static Singleton instance = new Singleton(); 
       public static Singleton getInstance() {
         return instance;   
       } 

    第二种形式:懒汉式单例类 
    public class Singleton { 
        private Singleton(){}
      private static Singleton instance = null;
      public static synchronized Singleton getInstance() {
       if (instance==null)instance=new Singleton();
        return instance;
        }



    第三种形式:登记式单例(省略)


    (4)哪一种模式更安全?为什么?
    第一种形式要更加安全些
    instance = new Singleton(); 
    static属于类的资源,类资源在jvm加载类的时候就加载好了,instance一直引用这new Singleton(),所以永远都不会释放一直存在与内存中直到程序结束运行

    第2种的话如果两个线程同一时刻去访问getInstance的时候就可能创建两个实例,所以不安全
    解决办法(加上同步锁)

    ---------------------- 参考至单例模式详解

  • 相关阅读:
    python 装饰器
    git
    JS原生方法实现jQuery的ready()
    js获取css属性方法
    列表页调出点击量
    数组操作
    判断IE版本
    判断IE浏览器用IE条件表达式
    [jQuery] Cannot read property ‘msie’ of undefined错误的解决方法
    复选框字段数组拆分后循环选项值,if判断根据选项值,前端输出html
  • 原文地址:https://www.cnblogs.com/xiaohouzai/p/7400845.html
Copyright © 2011-2022 走看看