java单例模式写个计数器_Java设计模式之(一)------单例模式

本文详细介绍了Java中的单例模式,包括单例模式的概念、设计思想,以及不同实现方式,如饿汉模式、懒汉模式(线程不安全、线程安全和双重校验锁)和最终版的优化。文章还讨论了枚举类和静态内部类实现单例,并列举了单例模式在实际应用中的场景,如Windows回收站、网站计数器和数据库连接池。
摘要由CSDN通过智能技术生成

1、什么是单例模式?

采取一定的办法保证在整个软件系统中,单例模式确保对于某个类只能存在一个实例。有如下三个特点:

①、单例类只能有一个实例

②、单例类必须自己创建自己的实例

③、单例类必须提供外界获取这个实例的方法

2、单例类的设计思想(Singleton)

①、外界不能创建这个类的实例,那么必须将构造器私有化。

public class Singleton {

//构造器私有化

private Singleton(){

}

}

②、单例类必须自己创建自己的实例,不能允许在类的外部修改内部创建的实例,所以将这个实例用 private 声明。为了外界能访问到这个实例,我们还必须提供 get 方法得到这个实例。因为外界不能 new 这个类,所以我们必须用 static 来修饰字段和方法。

//在类的内部自己创建实例

private static Singleton singleton = new Singleton();

//提供get 方法以供外界获取单例

public Singleton getInstance(){

return singleton;

}

3、单例模式之饿汉模式

public class Singleton {

//构造器私有化

private Singleton(){

}

//在类的内部自己创建实例

private static Singleton singleton = new Singleton();

//提供get 方法以供外界获取单例

public static Singleton getInstance(){

return singleton;

}

}

测试:

public static void main(String[] args) {

Singleton s1 = Singleton.getInstance();

Singleton s2 = Singleton.getInstance();

System.out.println(s1.equals(s2)); //true

}

这种模式避免了多线程的同步问题,不过在 类装载的时候就进行了实例化,有可能这个实例化过程很长,那么就会加大类装载的时间;有可能这个实例现阶段根本用不到ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值