题目:设计一个类,我们只能生成该类的一个实例
说明:只能生成一个实例的类是实现了Singleton(单例模式)的类型。由于设计模式在面向对象编程中有着举足轻重的作用,因此很多公司都会考察。在众多模式中,Singleton模式是唯一一个能够用十几行代码完整实现的设计模式,因此此题目很常见
饿汉式单例类
public class Singleton{
private static final Singleton instance=new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}}
饿汉式点评:单例模式要求只能生成一个实例,所以其构造方法的属性为private,其余方法加上static关键字,保证该方法只能被调用1次。
懒汉式单例模式
public class Singleton{
private static Singleton instance=null;
private Singleton(){}
public synchronized static Singleton getInstance(){
if(instance==null)
{
instance=new Singleton();
}
return instance;
}
}
懒汉式点评:与饿汉式单例模式相比,懒汉式在需要时才创建,所以赋值为null时,要去掉final关键字。在创建时,要保证其在多线程环境下依然只能够创建1个实例,所以用synchronized关键字修饰。其余方面与饿汉式类似,都需要用private关键字修饰构造方法和初始化赋值,方法都需要用static关键字修饰。
ps:本文参考《剑指offer:名企面试官精讲典型编程题》(何海涛著,北京:电子工业出版社,2012)和优快云资源(http://download.youkuaiyun.com/detail/linda_lindaaaa /9055079)以及其他互联网资源。