实现单例模式(Java)

题目:设计一个类,我们只能生成该类的一个实例
说明:只能生成一个实例的类是实现了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)和CSDN资源(http://download.csdn.net/detail/linda_lindaaaa /9055079)以及其他互联网资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值