java 设计模式之五-单例模式

单例模式是比较简单的模式,在团队副本中,BOSS被击杀之后,每个队员我摸尸体,看到的掉落装备都是一样的,此时这个BOSS的尸体就可以用单例模式实现。在尸体未消失之前,即使你除了副本,然后再进来,还是这具尸体。

单例模式的特征是某个对象只有唯一实例存在。

实现单例模式的要点有几个:

1.该类本身构造私有化

2.自己创建一个实例,然后提供接口给外部访问


package single;

public class Boss {

    private static Boss boss;

    /**
     * DOC 构造函数私有化,防止外部调用生成多个实例.
     */
    private Boss() {
    }

    /**
     * DOC 提供接口给外部访问获取单例.
     * 
     * @return
     */
    public static Boss getInstance() {
        if (boss == null) {
            boss = new Boss();
        }
        return boss;
    }

    public void speak() {
        System.out.println("我是伊利丹,我的编号是:" + boss.hashCode());
    }

}

测试类:

package test;

import single.Boss;

public class SingleTest {

    public static void main(String[] args) {
        Boss boss1 = Boss.getInstance();
        Boss boss2 = Boss.getInstance();

        boss1.speak();
        boss2.speak();
    }

}

测试结果:

我是伊利丹,我的编号是:25860399
我是伊利丹,我的编号是:25860399


另外,关于什么时候初始化这个实例,可以再有请求需要的时候初始化,也可以在类加载的时候就初始化。此外,如果在多线程中使用单例模式,要考虑下安全性的问题。比如需要在getInstance加上同步关键字等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值