首页 > 试题广场 >

实现单例模式的类具有?

[单选题]
实现单例模式的类具有?
  • 没有公有构造方法,一个公有静态工厂方法,和一个静态实例变量
  • 没有公有构造方法,有一个私有静态工厂方法,和一个静态实例变量
  • 有公有构造方法,没有静态工厂方法和静态实例变量
  • 没有公有构造方法,没有公有静态工厂方法,也没有静态实例变量

1     单例(Singleton)模式:单例模式确保某一个类只有一个 实例,而且该类只能是自己 实例化自己并向其他类公开 这个实例的对象创建 模式

     采用单例模式的类:根据单例模式知道其要满足以下三点

     1. 确保某一个类只有一个实例

     2. 而且自己实例化

     3. 并向其他类提供这个实例类 。
2    确保以上三点的所采用的编程策略
    * 把构造方法声明为Private。确保只能由自己创建,避免外部创建实例或者被子类继承从而创造额外实例;
    * 定义一个私有静态的该类的实例作为该类的数据域。确保一个类只能有一个实例;
    *定义一个静态 工厂方法。外部类不能实例化一个该类的对象,所以只能用Static 的方法,提供给其他类调用,返回此单例类唯一的实例。

发表于 2015-10-10 16:36:50 回复(1)
/**
	 //饿汉式  一开始就建立单例对象 需要就直接返回
	private static Single instance=new Single();//静态实例变量
         private Single(){}// 私有构造方法
        public static Single getInstance(){//共有静态工厂方法
	return instance;
	}
	 */
	/**
	//懒汉式 到需要时才创建
	private static Single instance;
	private Single(){}
	public static Single getInstance(){
		if(instance==null){
			instance=new Single();
		}
		return instance;
	}*/
	
	//双重检查
	private volatile static Single instance;
	private Single(){}
	public static Single getInstance(){
		if(instance==null){
			synchronized(Single.class){
				if(instance==null){
					instance=new Single();
				}
			}
		}
		return instance;
	}

发表于 2016-08-30 20:35:25 回复(0)

在双检锁/双重校验锁(DCL--- double-checked locking)模式下符合A选项


public class Singleton {  
    private volatile static Singleton singleton;  
    private Singleton (){}  
    public static Singleton getSingleton() {  
    if (singleton == null) {  
        synchronized (Singleton.class) {  
        if (singleton == null) {  
            singleton = new Singleton();  
        }  
        }  
    }  
    return singleton;  
    }  
}

                                                                                                                                                (代码摘至菜鸟教程)

发表于 2020-04-24 20:09:38 回复(0)
怎么看大家的分析好像应该选B?
发表于 2017-09-16 10:17:48 回复(0)
public class SingletonClass{
private static SingletonClass instance=null;//一个静态私有对象
public staticsynchronizedSingletonClass getInstance(){//一个静态的公有函数
if(instance==null){
instance=new SingletonClass();
}
return instance;
}
private SingletonClass(){//私有构造函数
}
}
1.单例模式的类只提供私有构造函数
2.类定义中有一个静态私有对象
3.该类提供一个静态的公有函数,用来创建或者获取它本身的静态私有对象
编辑于 2017-03-08 19:45:01 回复(0)
做题眼神要好
编辑于 2016-09-22 23:43:36 回复(0)
分析错误
发表于 2016-02-25 10:49:00 回复(0)